2016-04-07 8 views
1

私は外部リソースをロードするためには時間がかかるので、私はこのロジックを実装した場合、私のページのレンダリングを遅らせたくない...Firefoxで外部リソースが読み込まれていない場合は、Webページのレンダリングのブロックを解除するにはどうすればよいですか?

<script type="text/javascript"> 
    function importScript (sSrc, fOnload) { 
     var oScript = document.createElement("script"); 
     oScript.type = "text\/javascript"; 
     oScript.defer = true; 
     if (fOnload) { oScript.onload = fOnload; } 
     document.currentScript.parentNode.insertBefore(oScript, document.currentScript); 
     oScript.src = sSrc; 
    } 

    importScript(“//thirdpartysite.com/theirscript.js", function() { doStuff(); }); 
    }); 
</script> 

これは、MacのFirefox(私はバージョン45.0を使用しているのを除いて素晴らしい作品.1)。そのブラウザでは、このリソースがロードされるまでページはレンダリングされません。誰もが、好ましくはChromeとFirefoxの両方で動作するページのレンダリングをブロックせずにリソースの読み込みを遅らせる方法を知っていますか(すべてのブラウザがうまくいくでしょうが、それらをすべてテストする時間がありません)。

+1

テストされていません。ヘッダーに(おそらく)追加するのではなく、 'oScript.async = true;'と 'document.body.appendChild(oScript);です。これがうまくいかない場合は'DOMContentLoaded'の後まで関数内のコードの実行を遅らせてください。 – Thomas

+0

上記の行を削除して、ここにあるものを置き換えますか? – Dave

+0

の前に、

関連する問題