我正在使用导入功能仅在需要时导入javascript文件。我的功能如下所示。它们位于main.js
文件中,位于jquery准备好的包装器中。
$(function() {
function globaltrigger(){
alert('');
}
function $import(src){
var scriptElem = document.createElement('script');
scriptElem.setAttribute('src',src);
scriptElem.setAttribute('type','text/javascript');
document.getElementsByTagName('head')[0].appendChild(scriptElem);
}
});
我们假设我们通过鼠标点击导入javascript文件。 $import('newfile.js');
。但是,这个新导入的文件无法访问main.js
javascript文件中的函数。例如:
// the following function is placed in the newfile.js file
$(function() {
globaltrigger();
});
任何使这项工作的方法?
答案 0 :(得分:1)
我怀疑你的问题是globaltrigger()
功能不在全球范围内。它位于jQuery DOM就绪函数内部,因此无法从外部访问。
将其移至全局范围:
function globaltrigger(){
alert('');
}
$(function(){
// dom ready stuff
});
避免使用大量变量和函数来污染全球空间是一种很好的做法。您可以将函数/变量存储在对象下,这是实现名称空间的简单方法。
var SomeApp = {};
SomeApp.globaltrigger = function(){
alert('');
};
在外部JavaScript中,您可以调用它:
SomeApp.globaltrigger();
这很好,因为您的所有代码都位于SomeApp
对象下。
答案 1 :(得分:1)
DOM ready会创建一个闭包,使您的函数仅限于该范围。您可以将您的函数声明为全局,如下所示:
window.globaltrigger = function(){
alert('');
}
现在该功能是真正的全局功能,可以被其他脚本调用。