javascript - 文件加载时的事件

标签 javascript dom

下面的代码在页面上运行:

(function() {
  function asyncLoad() {
    var urls = ["https://something.com/script.js"];
    for (var i = 0; i < urls.length; i++) {
      var s = document.createElement('script');
      s.type = 'text/javascript';
      s.async = true;
      s.src = urls[i];
      var x = document.getElementsByTagName('script')[0];
      x.parentNode.insertBefore(s, x);
    }
  }
  window.attachEvent ? window.attachEvent('onload', asyncLoad) : window.addEventListener('load', asyncLoad, false);
})();
//]]>

我需要一个事件监听器,当该文件在 DOM 中可用时触发。

我需要利用此脚本中的变量。

我需要知道 https://something.com/script.js 何时已加载,如果没有加载,我需要启动备份。如果文件在指定时间内未加载,则可能会发生这种情况。

或者,当 script.js 文件中的变量可用时,我可以使用事件。

最佳答案

脚本元素支持加载事件,因此您应该在将脚本元素插入 DOM 之前设置监听器,例如

  s.src = urls[i];

  s.onload = asyncLoad; // add load listener

  var x = document.getElementsByTagName('script')[0];
  x.parentNode.insertBefore(s, x);     

如果您想知道它是否成功到达,请使用 XMLHttpRequest 获取内容,然后将其分配给脚本元素的 text 属性。这样您就可以知道脚本是否已被检索,在失败时设置超时并采取纠正措施,同时不会锁定浏览器。

关于javascript - 文件加载时的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11444209/

相关文章:

javascript - 使用 jquery 一次选择一个元素

php - 如何获取 $node 中的 html 而不仅仅是 $nodeValue

javascript - element.querySelector (".exampleClass") 不是函数

javascript - 使用 jQuery 动态更改表中的行跨度

javascript - 使用 Node.js 遍历 XML 文档的最快方法?

javascript - 如何制作一个html随机重定向

jquery - 如何使用 jQuery 获取整个页面的 HTML?

javascript - 闪烁或闪烁 bgcolor

javascript - 没有 "Uncaught ReferenceError: props is not defined"的解构

javascript - 使用 document.elementFromPoint 获取附近的路径