Javascript 在选项卡视图中

Javascript in tab views

我在选项卡视图的函数体中定义了一个 Javascript 函数,但是当我尝试调用它时,该函数未定义。我移动了函数,所以它在 index.php 中定义,现在它工作得很好。这是怎么回事?

您的观察是正确的。 JavaScript 在选项卡视图 (icl/show[module].inc.php) 中声明的函数不会自动加载。您可以将函数放在 index.php 中,以便该函数在全球范围内可用。但是,不推荐这样做,原因有二: 1. 您还必须更改 iphone.php,在这种情况下,您最终会得到相同代码的两个副本; 2. 最好按需加载模块特定的JavaScript函数。

在icl/list[module]s.inc.php中,有这一行:

ajxjs(self.show[module],'[module]s.js');

上面一行检测是否加载了函数show[module]。如果没有,它将加载在[module]s.js 中定义的所有函数。这样可以确保 JS 文件只加载一次。

函数必须按以下格式编写:

show[module]=function(param1, param2){...}

而不是这个:

function show[module](param1, param2){...}

如果无需通过列表视图即可打开选项卡,则必须手动加载 JS 文件。例如,您有一个名为 update[module] 的函数,但是 [module] 选项卡是通过 [anothermodule]:

打开的
<a onclick="ajxjs(self.update[module], '[module]s.js'");>open</a>

从技术上讲,您也可以使用 self.show[module] 标志。它同样有效。

为了完整起见,还有另一种不太推荐的方法来加载 JavaScript 函数。如果您使用 ajxpgn,则有第四个参数强制加载脚本块。陀螺仪的结构可以避免这种用例。如果您发现自己需要内容文件中的脚本块,请考虑以不同方式组织代码。