我正在尝试为我的用户提供一个 <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 吗?
最佳答案
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);
关于Javascript 动态插入插件和代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25375065/