2014-12-06 40 views
2

我需要在jQuery庫文件(john.js)中遠程包含jQuery庫。我沒有任何運氣嘗試過;如何在JavaScript中包含jQuery庫而不需要<script src =「」>

(function(d, t) { 
    var g = d.createElement(t), // create a script tag 
     s = d.getElementsByTagName(t)[0]; // find the first script tag in the document 
    g.src = 'http://code.jquery.com/jquery-latest.js'; // set the source of the script to your script 
    s.parentNode.insertBefore(g, s); // append the script to the DOM 
}(document, 'script')); 

$(document).ready(function() { 

// My jquery works here 

}); 

我想以javascript的方式獲取腳本。什麼是正確的方法來做到這一點?

+0

你看過jQuery的getScript()函數嗎? http://api.jquery.com/jquery.getscript/ – Nate 2014-12-06 03:18:23

+0

我想抓取jquery,而不是js。以及如何使用,當你沒有包含jQuery庫? getScript()是一個jQuery函數,而不是javascript。 – user198989 2014-12-06 03:21:41

+0

但是您是否在研究其代碼的意義上看過'getScript()'以查看其工作原理? – nnnnnn 2014-12-06 03:24:15

回答

3

這裏的錯誤是,當執行該代碼jQuery是尚未加載:

$(document).ready(function() { .. } 

原樣,你會得到這樣的錯誤:$ is undefined(或類似)

您應該使用onload事件的創建腳本元素,以確保它被加載Jquery。

此示例顯示瞭如何實現您的目標。祝你好運。

var newScript = document.createElement('script'); 
 
newScript.type = 'text/javascript'; 
 
newScript.src = 'http://code.jquery.com/jquery-latest.js'; // set the source of the script to your script 
 
newScript.onload = function() { 
 
    alert("Script is ready!"); 
 
    $(document).ready(function() { 
 
    alert("JQuery is ready!"); 
 
    }); 
 
}; 
 
var head = document.getElementsByTagName("head")[0]; 
 
head.appendChild(newScript);

1

您可以使用XMLHttpRequesteval的組合來動態獲取JavaScript文件,如getScript對jQuery所做的那樣。

查看我的fiddle

+0

不,我想取jQuery,而不是js。 getScript是一個jQuery的函數,它不能工作,當你沒有包含jQuery庫 – user198989 2014-12-06 03:21:00

+0

據我所知,xmlhttprequest發送請求到網頁,如何獲取腳本。可能向我展示一個快速示例? – user198989 2014-12-06 03:28:03

+0

看我的小提琴。如果回答您的問題,請不要忘記接受和/或注意我的回答!我期待得到一些觀點。 – risto 2014-12-06 03:49:19

1

這裏是如何獲取答案,從其他崗位來:

Adding <script> element to the DOM and have the javascript run?

這beeing說,你可以有另外一個問題是,當你調用您的

$(document).ready(function() { 

// My jquery works here 

}); 

jQuery的可能尚未加載

所以你可以嘗試遞歸函數來檢查的jQuery已經載入了類似的東西(不泰斯特)...

function launch(callBack){ 
    if (window.jQuery) { 
     callBack(); 
    } else { 
     setTimeout(function(){launch(callBack);},100); 
    } 
} 
launch(function(){ 
    $(document).ready(function() { 
    // My jquery works here 
    }); 
}); 
0

通常情況下,jQuery是所謂的HTML文件之前調用自定義JavaScript文件:

<script src="http://code.jquery.com/jquery-latest.js"></script> 
<script src="app.js"></script> 
相關問題