非同期荷重js

5126 ワード

非同期ローディングjsの実装には、3つの方法がある.
  • defer:スクリプトの実行を遅延するかどうかを規定していますが、並行してダウンロードしています.DOMドキュメント全体が解析されてから実行されます.IEしか使えません.コードを内部に書いてもいいです.
    <script type="text/javascript" src="demo.js" defer="defer"></script>
    
  • async:非同期ローディング、ローディングが完了したら実行し、ページが解析されているかどうかにかかわらず実行する.asyncは外部スクリプトしかロードできません.jsscriptタグに書くことはできません.
  •  <script type="text/javascript" src="demo.js" async="async"></script>
    
  • scriptを作成し、DOMに挿入し、ロード完了後callBack(このような形式の非同期ローディングは、IEブラウザでは実行できない以外は、すべて可能である).
  • function loadScript(url, callback){
    var script = document.createElement_x("script")
    script.type = "text/javascript";
    if (script.readyState){ //IE
    script.onreadystatechange = function(){
    if (script.readyState == "loaded" ||
    script.readyState == "complete"){
    script.onreadystatechange = null;
    callback();
    }
    };
    } else { //Others: Firefox, Safari, Chrome, and Opera
    script.onload = function(){
    callback();
    };
    }
    script.src = url;
    document.body.appendChild(script);
    }