检查javascript是否已附加到页面?

时间:2012-09-17 09:41:08

标签: javascript jquery

有没有办法检查javascript文件是否已经通过文件名附加到页面上。

例如:

if ("path-to-script/scriptname.js") already embeded
{
call related function
}
else
{
Append '<script src="path-to-script/scriptname.js" type="text/javascript"> </script> '
call related function
}

基本上我不希望在同一页面上将两个脚本连接两次。

6 个答案:

答案 0 :(得分:6)

您需要测试脚本文件中的实际功能是否存在,如下所示:

if (window.function_name) {
    // script loaded
} else {
    // script not loaded
}

答案 1 :(得分:6)

您可能并不总是事先知道脚本包含哪些对象或函数,在这种情况下,您可以搜索包含所需src的脚本标记。

使用jquery:

$("script[src*='"+scriptName+"']");

没有jquery:

document.querySelector("script[src*='"+scriptName+"']");

答案 2 :(得分:2)

我同意@zathrus虽然我认为你应该使用requirejs来做这样的事情。这个想法是必须在执行代码之前获取依赖项。您正在使用的上述方法可能有效,但您无法保证。

RequireJS将精美地维护所有依赖性加载。它也很容易学习。

答案 3 :(得分:0)

只需检查库是否已定义,否则将其导入:

if ( !jQuery ) {
    var s = document.createElement('script');
    s.type = 'text/javascript';
    document.body.appendChild(s);
    s.src = "path-to-script/scriptname.js";
    void(0);
}
// call function

答案 4 :(得分:0)

你真的需要一个脚本加载器..因为正如你所说的那样你希望它特定于javascript资源文件名,这是你的javascript文件是彼此依赖的

www.headjs.com

www.modernizr.com

www.yepnopejs.com

答案 5 :(得分:0)

我认为这会对你有帮助。

if (typeof scriptname== "undefined") {
   var e = document.createElement("script");
   e.src = "scriptname.js";
   e.type = "text/javascript";
   document.getElementsByTagName("head")[0].appendChild(e); 
}