2012-09-17 66 views
4

有没有什么办法来检查javascript文件是否已经附加到页面的文件名。检查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个脚本来两次在同一页面上进行安装。

+1

由于使用的情况下,你可以逆转的条件下,废除了'else',只需调用函数之外的'加载脚本后的if-else块。 – bdares

+0

可能的重复http://stackoverflow.com/questions/11599311/check-whether-all-the-jquery-files-are-loaded-then-run-the-div-related-to-it/11599351#11599351 –

+0

@马汉这不是一个可能的重复。我的要求是不同的..谢谢 –

回答

6

您可能并不总是知道什么提前对象或功能的脚本包含,在这种情况下,你可以搜索包含所需SRC脚本标记。

使用jQuery:

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

没有jQuery的:

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

这应该是正确的答案 –

6

你需要从测试脚本文件中的实际功能是否存在,就像这样:

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

这是用function_name完成的。有无论如何,我们可以使用脚本的src来做到这一点? –

+0

不是我知道的,对不起 –

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 
2

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

RequireJS将精美地保持所有的依赖加载。学习也很容易。

0

我以为这会帮助你。

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