javascript - 从 javascript 代码在 DOM 中添加外部脚本

标签 javascript dom download sequence

我在正文末尾包含了 3 个外部 js 文件。 假设我的文档已经包含一个名为 insertlibs.js 的 js,代码如下

var script1 = document.createElement('script');
script1.src='http://code.jquery.com/jquery-latest.js';
script1.type='text/javascript';
document.getElementsByTagName('Body').item(0).appendChild(script1);

// Similar way to include underscore

var script2 = document.createElement('script');
script2.src='hhttp://documentcloud.github.com/backbone/backbone-min.js';
script2.type='text/javascript';
document.getElementsByTagName('Body').item(0).appendChild(script2);  

但有时会发生什么,它抛出一个错误 $ 未定义,我尝试在 Firefox 中进行调试,并且 jquery 和 Backbone 发生并行下载,有时 Backbone 库比 jQuery 更早下载,这导致了这种情况错误。

据我所知,如果包含 script 标签,它将阻止进一步的请求,所以一旦我在 dom 中添加 jquery。我对这里发生的工作流程感到困惑。

所以我找到了解决方案,我合并了 js 并进行了一次调用,该调用运行良好,但这并不能解释上述情况下发生的流程。请帮忙。

最佳答案

这是因为您试图包含主干而不确保 jquery 已完全加载。要纠正此问题,您可以使用脚本的 onload 属性附加一个回调,该回调将在加载 jquery 时触发。

例如:

var script1 = document.createElement('script');
script1.src='http://code.jquery.com/jquery-latest.js';
script1.type='text/javascript';

// add an onload handler
script1.onload = function() {

   // load the rest of the scripts here

   var script2 = document.createElement('script');
   script2.src='hhttp://documentcloud.github.com/backbone/backbone-min.js';
   script2.type='text/javascript';
   document.getElementsByTagName('Body').item(0).appendChild(script2);
}

document.getElementsByTagName('Body').item(0).appendChild(script1);

关于javascript - 从 javascript 代码在 DOM 中添加外部脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13054427/

相关文章:

javascript - 在 JavaScript 函数上获取周五停止的日期

javascript - 无法在 javascript selectize 中读取 undefine 上的属性 addOption

javascript - 在隐藏的 iframe : Android equivalent in Comet context? 中下载文件

javascript - 单击使用 YOUTUBE Iframe 加载多个视频

javascript - 如何更新 dom 元素以选择 vanilla JS 中的选项值?

javascript - 使用javascript在div中通过标签选择元素

android - 如何从 Facebook 视频 URL 中提取可用的视频分辨率?

javascript - 获取 API 下载进度指示器?

javascript - 使用 JavaScript 设置自定义属性

javascript - 创建一个 Jquery 对象的对象