0

以下のコードはページで実行されます。

(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 ファイルから変数が使用可能になったときにイベントを使用することもできます。

4

2 に答える 2

1

script.jsたとえば、次のような機能がある場合は、次のfunction a()ように使用できる場合にキャッチできます

var checkScript = function(){
   if (typeof a  === "function"){
      //fire event
   }else{
      setTimeout(checkScript, 1000);
   }
}
checkScript ();
于 2012-07-12T02:29:53.953 に答える
1

スクリプト要素は load イベントをサポートするため、DOM に挿入する前にスクリプト要素にリスナーを設定する必要があります。

  s.src = urls[i];

  s.onload = asyncLoad; // add load listener

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

正常に到着したかどうかを知りたい場合は、XMLHttpRequest を使用してコンテンツを取得し、スクリプト要素のtextプロパティに割り当てます。こうすることで、スクリプトが取得されたかどうかを確認し、失敗した場合にタイムアウトを設定して修正アクションを実行し、その間ブラウザをロックしないようにすることができます。

于 2012-07-12T02:38:17.507 に答える