【问题标题】:How to check if an asynchronously loaded script has finished loading in javascript如何检查异步加载的脚本是否已在 javascript 中完成加载
【发布时间】:2012-08-24 19:43:25
【问题描述】:

使用 javascript 异步下载另一个 javascript 文件。

我知道这可以通过在页面上插入一个新的脚本标签来完成,并将 src 属性设置为文件 url。

脚本下载完成后,我还需要运行一些代码。我一直在为此使用yepnope,它们提供了在脚本完成下载和执行时执行的“回调”。

这是如何实现的?

谢谢!

【问题讨论】:

    标签: javascript yepnope dynamic-script-loading


    【解决方案1】:

    大多数 JS 加载器通过将 <script> 标记注入 DOM 并将其 onload 事件绑定到您提供的函数来执行此操作。

    yepnope 使用相同的方法,您可以从它的source code 中简单地观察到这一点。函数injectJs 使用doc.createElement 创建一个DOM 元素,使用setAttribute 设置src 和其他需要的属性,将onreadystatechangeonload 事件绑定到提供的回调,最后将元素插入到文档中.

    【讨论】:

      【解决方案2】:

      yepnope.injectJs( scriptSource [, callback ] [, elemAttributes ] [, timeout ]); 直接their website:你只需像这样在成功的回调中运行你需要的代码。

      // Example
      yepnope.injectJs("jquery.js", function () {
        console.log("It is finished loading and I can do whatever I need to here");
      }, { charset: "utf-8" }, 5000);
      

      【讨论】:

      • 感谢您的回复。问题是我不能为此使用 yepnope。
      • @ChrisDutrow 那么你为什么要用yepnope 标签来标记这个问题呢?
      • @jessegavin - 我这样标记是因为我在问题中提到了 yepnope。
      【解决方案3】:

      这可以使用 jquery 来完成,如果你想使用它,Jquery.getScript()

      查看它提供有关它的详细信息的链接。

      【讨论】:

        猜你喜欢
        • 2012-01-07
        • 2016-03-26
        • 2014-11-30
        • 1970-01-01
        • 2012-04-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-16
        相关资源
        最近更新 更多