我希望标题不会令人困惑。我有以下情况。
请注意,这是与 Joomla 相关的问题。
我有两个外部JavaScript文件: accordion.js 和 initialize.js ,我将其包含在模板的 index.php 文件中
accordion.js 看起来像这样:
const int result = system("sudo /usr/local/bin/myMountScript.sh <options>");
//Error handling on result follows below
然而这不起作用,因为JQuery没有冲突。必须做以下事情:
function Accordion ( options ) {
/* code here */
}
Accordion.prototype.someFunction = function ( params ) {
/* code here that uses JQuery */
}
它确实有效。如果我在该块中输入警报('Hello'),它就可以工作。
现在我有一个外部文件 initialize.js ,它也包含在模板中。
此文件需要能够访问(并实例化)Accordion类。所以它看起来像这样:
(function($) {
function Accordion ( options ) {
/* code here */
}
Accordion.prototype.someFunction = function ( params ) {
/* code here that uses JQuery */
}
})(JQuery)
在这里,Javascript说它不知道“手风琴”是什么。
但是,如果我将这段代码移到accordion.js文件中,它将会起作用。
(function($) {
$(document).ready(function() {
var accordion = new Accordion({});
/* other code here that uses JQuery */
});
}
这很有效。
我相信我明白为什么它不起作用。这与范围有关,对吧?这两个文件基本上是两个不能互相访问的不同(en)封闭块。
我现在的问题是,如何让他们进行沟通?如何在 accordion.js 全局中创建脚本,以便 initialize.js 可以访问其变量和函数?
PS:让我们假装没有其他办法,只是将脚本及其初始化分成两个不同的文件。您包含 accordion.js 脚本,并初始化 initialize.js 。我知道可能有更好的方法来做到这一点,但我不允许更改HTML代码,以使初始化更通用/全局,并且只使用一个文件。