Javascript动态插入插件和代码

时间:2014-08-19 02:58:16

标签: javascript jquery

我试图为我的用户提供一个<script>标记,该标记会向页面添加一些插件并执行一些javascript代码。我为我的用户提供了这样的代码段,并要求他们将其添加到他们网站正文的任何​​位置:

<script type="text/javascript" src="//my-domain/code?s=1a2b3c4d&t=faq&cb=1408412749" async></script>

在回复中,我有以下Javascript代码:

//add jquery to page
var script  = document.createElement('script');
script.src = 'http://my-domain/assets/js/jquery.min.js';
document.body.appendChild(script);

//move jquery to our own namespace
var script = document.createElement('script');
script.innerText = "var SB = {};SB.$ = jQuery.noConflict(true);";
document.body.appendChild(script);

正如您所看到的,我尝试将Jquery添加到页面中,然后在Jquery已存在的情况下命名它。问题是当代码执行时,我收到了这个错误:

Uncaught ReferenceError: jQuery is not defined

所以,显然jQuery在命名空间代码执行时尚未加载,但我不明白为什么。在这一点上不应该定义jQuery吗?

1 个答案:

答案 0 :(得分:1)

script.onload函数似乎解决了这个问题:

//add jquery to page
var script  = document.createElement('script');
script.src = 'http://my-domain/assets/js/jquery.min.js';
script.onload = function(){
    //move jquery to our own namespace
    var script = document.createElement('script');
    script.innerText = "var SB = {};SB.$ = jQuery.noConflict(true);";
    document.body.appendChild(script);
}
document.body.appendChild(script);