我试图为我的用户提供一个<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吗?
答案 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);