在需要时导入javascript文件和全局变量

时间:2014-05-10 13:04:20

标签: javascript jquery

我正在使用导入功能仅在需要时导入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();
});

任何使这项工作的方法?

2 个答案:

答案 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('');
}

现在该功能是真正的全局功能,可以被其他脚本调用。