Javascript 加载文件时的事件

Javascript 加载文件时的事件,javascript,dom,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 = tr

以下代码在页面上运行:

(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);
})();
//]]>
(函数(){
函数asyncLoad(){
变量URL=[”https://something.com/script.js"];
对于(var i=0;i
我需要一个事件监听器,当这个文件在DOM中可用时触发

我需要利用这个脚本中的变量

我需要知道什么时候
https://something.com/script.js
已加载,如果未加载,我希望备份到fire。如果文件未在指定的时间段内加载,则可能发生这种情况


或者,我可以使用一个事件来表示script.js文件中的变量何时可用。

如果在
script.js
中有一个函数,例如:
function a()
,那么您可以像这样捕获可用的变量

var checkScript = function(){
   if (typeof a  === "function"){
      //fire event
   }else{
      setTimeout(checkScript, 1000);
   }
}
checkScript ();

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

  s.src = urls[i];

  s.onload = asyncLoad; // add load listener

  var x = document.getElementsByTagName('script')[0];
  x.parentNode.insertBefore(s, x);     
如果您想知道它是否成功到达,请使用XMLHttpRequest获取内容,然后将其分配给script元素的text属性。这样,您就可以知道脚本是否已被检索,在出现故障时设置超时,并采取纠正措施,同时不锁定浏览器。

类似