2016-02-08 1 views
7

</body>タグの直前に外部ソースからJSをロードしています。私はこのサードパーティーのJSを提供しようとしている間にサーバーがハングした場合に何が起こるかを試してみています。私のページのすべてがうまくいくようですが、ブラウザがまだページが読み込まれているかのように回転しています。ブラウザが完全にロードされたページを宣言するのを待たないような方法でこのjavascriptをロードする方法はありますか?body内に非同期にロードされたJSがブラウザを「読み込み」モードにしておく

は参考のために、私は非同期的に私のJSをロードするには、次の二つの方法を試してみました:

<script> 
    var resource = document.createElement('script'); 
    resource.src = "https://myserver.com/js/myjs.js”; 
    var script = document.getElementsByTagName('script')[0]; 
    script.parentNode.insertBefore(resource, script); 
</script> 

<script async src="https://myserver.com/js/myjs.js"></script> 
+1

あなたのスクリプトで 'async'属性を使用しているのか、それとも非同期にロードするために何か他のことをしていますか? – zero298

+0

@ zero298良い質問、私はこれを明確にするために編集しました – kat

+0

リクエストは決してタイムアウトしないと言っていますか、スクリプトを永久にロードしようとしていますか? – adeneo

答えて

0

アンチェック上記のコメントと私自身の実験から集めた答え:

の後に第三者JS をロードすると、残りのページの読み込みが完了すると、ブラウザは外部リソースがハングアップした場合でも完全に読み込まれたかのようにページをレンダリングします。これを達成する1つの方法は、window.setTimeoutのJSを、ページの標準読み込み時間よりも長いタイムアウトで読み込むことです。

標準のスクリプトタグではなくJS関数を使用して外部JSを読み込むときは、data-属性がある場合は、resource.datasetオブジェクトに属していることに注意してください。

タイムアウトがうまく下に5秒で私のページが読み込まので私の作品、私がいないように、上記の例では、

<script async data-my-data="someData" src="https://myserver.com/js/myjs.js"></script> 

が5000という

<script> 
    window.setTimeout(function() { 
     var resource = document.createElement('script'); 
     resource.dataset.myData = "someData"; 
     resource.src = "https://myserver.com/js/myjs.js"; 
     var script = document.getElementsByTagName('script')[0]; 
     script.parentNode.insertBefore(resource, script); 
    }, 5000); 
</script> 

注なりました最初の5秒間にロードしているJSが必要です。より早く必要な場合や、ページの読み込みに時間がかかる場合は、この数値を調整する必要があります。また、前述の@adeneoと同じように、ajaxを使ってjsをロードする方法もあります。

-4

あなたはgetscriptでJSを読み込むことができ、このdemo

+1

、それはまだであっても、リンクのない試みた答えです。これはフラグが立てられてはいけません。また、[LQPRQの削除に推奨]するべきではありません(https://stackoverflow.com/review/low-quality-posts/11192851)。参照:[それは間違っている:低品質投稿キューの正気の嘆願](https://meta.stackoverflow.com/q/287563)と[あなたの答えは別の城にあります:答え?](https://meta.stackexchange.com/q/225370) –

+0

詳細については、[jQuery.getScript()](https://api.jquery.com/jquery.getscript/)を参照してください。 – showdev

関連する問題