2012-09-17 65 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); 
}