Javascript 动态插入插件和代码

标签 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 吗?

最佳答案

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/

相关文章:

javascript - 如何检测滚动值是否大于窗口高度?

javascript - 失败的 Prop 类型 : Invalid prop `component` of type `object` supplied to `Route` , 预期 `function`

javascript - 检查值是否在范围内并设置值是否超出范围的优雅方法?

json - Chrome "SyntaxError: Unexpected token :"与简单的 JSON

javascript - 如何改进JS(Jquery)代码?一个简单的下拉菜单

javascript - 如何在 Apigee 中使用 JavaScript 替换多个位置的 json 属性值

javascript - 如何在 JavaScript 中高效计算最近的二维点?

javascript - 在后台加载页面不会在数据库中插入数据

javascript - 如何在调用数据库后通过 href 链接为每一行创建一个弹出窗口

jquery - 无法获得右手 jQuery 选项卡以正确设置动画