簡體   English   中英

包含來自另一個JavaScript文件的jQuery

[英]Include jQuery from another JavaScript file

我試圖從javascript文件中包含jQuery。 我嘗試了以下,雖然它不起作用。

var script = '<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.min.js"></script>';
document.getElementsByTagName('head')[0].appendChild(script);

</script>關閉打開的<script>塊,即使它在字符串中。 我會這樣做:

(function() {
    var script = document.createElement('script');
    script.type = 'text/javascript';
    script.src = document.location.protocol + '//code.jquery.com/jquery-1.9.1.min.js';

    document.getElementsByTagName('head')[0].appendChild(script)
})();

你不能在腳本塊中的任何地方擁有</script> ,甚至不能在字符串中,因為它將在那里結束腳本塊。

分解字符串中的結束標記:

var script = '<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.min.js"></scr'+'ipt>';
 (function() {
        var script = document.createElement('script');
        script.type = "text/javascript"; // keeping older browsers happy. 
        script.src = window.location.protocol + '//code.jquery.com/jquery-1.9.1.min.js';
        // browsers prevent cross-protocol downloading.
        (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(script);// In Opera a site can get by without a <head>
    })();

只需使用jQuery getScript()方法加載jQuery: http ://api.jquery.com/jQuery.getScript/

...開玩笑。

試試這段代碼:

var head = document.getElementsByTagName('head')[0];
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'http://code.jquery.com/jquery-1.9.1.min.js';
head.appendChild(script);

來自: http//unixpapa.com/js/dyna.html

此外,如果在https頁面上使用,則需要從兼容https的CDN加載腳本,例如Google Hosted Libraries(src =“// ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery .min.js“)

var script = document.createElement('script');
script.src = 'http://code.jquery.com/jquery-1.9.1.min.js';
document.getElementsByTagName('head')[0].appendChild(script);

使用一個微小的可重用腳本加法器:

function fetch(url){
 var d=document, s='script';
 d.getElementsByTagName(s)[0].parentNode.appendChild(d.createElement(s)).src=url;
}

fetch('//code.jquery.com/jquery-1.9.1.min.js');

並非所有頁面都在所有瀏覽器中都有HEAD,但如果腳本正在運行,兄弟腳本標簽也可以運行......

首先,變量腳本包含序列</script> ,您無法使其顯示在代碼中,因為瀏覽器將假定(並且必須)它是<script>標記關閉。 例如,如果您的腳本代碼包含語法錯誤,這是一個沒有關閉的字符串變量"它看起來像

<script>var bad = "abcd ;</script>

要解決這個問題,你可以打破像"</scr" + "ipt>"這樣的</script>字符串,或者你可以將其轉義: "<\\/script>"

所以:

var script = '<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.min.js"><\/script>';
document.getElementsByTagName('head')[0].appendChild(script);

第二件事是appendChild()函數接受Node元素而不是字符串

所以:

var script = document.createElement("script");
script.src = "http://code.jquery.com/jquery-1.9.1.min.js";
document.getElementsByTagName("head")[0].appendChild(script);

無論如何,我更喜歡使用像RequireJS這樣的模塊和JavaScript加載器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM