包含来自另一个JavaScript文件的jQuery

时间:2013-05-03 23:27:44

标签: javascript jquery dom

我正在尝试从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);

7 个答案:

答案 0 :(得分:7)

</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)
})();

答案 1 :(得分:1)

你不能在脚本块中的任何地方拥有</script>,甚至不能在字符串内,因为它将在那里结束脚本块。

分解字符串中的结束标记:

var script = '<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.min.js"></scr'+'ipt>';

答案 2 :(得分:1)

 (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>
    })();

答案 3 :(得分:1)

只需使用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“)

答案 4 :(得分:0)

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

答案 5 :(得分:0)

使用微小的可重复使用的脚本加法器:

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,但如果脚本正在运行,兄弟脚本标签也可以运行......

答案 6 :(得分:-1)

首先,变量脚本包含序列</script>,您无法使其显示在代码中,因为浏览器将假设(并且必须)它是<script>标记关。 例如,如果您的脚本代码包含语法错误,这是一个没有关闭"的字符串变量,它将看起来像

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

要解决这个问题,你可以打破</script>之类的"</scr" + "ipt>"字符串,或者你可以将其转义:"<\/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加载器。