有没有办法检查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
}
基本上我不希望在同一页面上将两个脚本连接两次。
答案 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文件是彼此依赖的
答案 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);
}