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,则有第四个参数强制加载脚本块。陀螺仪的结构可以避免这种用例。如果您发现自己需要内容文件中的脚本块,请考虑以不同方式组织代码。
我在选项卡视图的函数体中定义了一个 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,则有第四个参数强制加载脚本块。陀螺仪的结构可以避免这种用例。如果您发现自己需要内容文件中的脚本块,请考虑以不同方式组织代码。