5

有没有办法检查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
}

基本上我不希望 1 个脚本在同一页面上附加两次。

4

6 回答 6

7

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

使用 jquery:

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

没有jQuery:

document.querySelector("script[src*='"+scriptName+"']");
于 2013-11-20T17:43:23.063 回答
6

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

if (window.function_name) {
    // script loaded
} else {
    // script not loaded
}
于 2012-09-17T09:42:54.807 回答
2

我同意@zathrus,尽管我认为您应该将requirejs用于此类事情。这个想法是必须在执行代码之前获取依赖项。您使用的上述方法可能有效,但您不能保证任何事情。

RequireJS 将漂亮地维护所有依赖项加载。它也很容易学习。

于 2012-09-17T09:49:27.783 回答
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
于 2012-09-17T09:48:11.687 回答
0

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

www.headjs.com

www.modernizr.com

www.yepnopejs.com

于 2012-09-17T09:56:12.620 回答
0

我认为这会对你有所帮助。

if (typeof scriptname== "undefined") {
   var e = document.createElement("script");
   e.src = "scriptname.js";
   e.type = "text/javascript";
   document.getElementsByTagName("head")[0].appendChild(e); 
}
于 2012-09-17T09:58:19.103 回答