1.一番下のスクリプト
「同期」スクリプト タグを使用すると、スクリプトが読み込まれて実行されるまで、ブラウザによるページのレンダリングがブロックされます。この方法には次の効果があります。
2. 一番下のスクリプトは外部スクリプトを読み込みます
JavaScript を使用してスクリプト タグを挿入すると、ブラウザをブロックしない「非同期」スクリプト タグが作成されます。この方法には次の効果があります。
- スクリプト タグを生成する JavaScript コードを配置する場所に関係なく、ブラウザは、ページをブロックすることなく、利用可能になるとすぐにそれを実行します。DOMContentLoaded は必要なときに起動します。スクリプトがダウンロード/実行されたかどうかに関係なく。
2 番目の方法には、次の利点があります。
- スクリプト タグを挿入するスクリプトは、ドキュメント ヘッドを含む任意の場所に配置できます。
- スクリプトはレンダリングをブロックしません。
- DOMContentLoaded イベントはスクリプトを待機しません。
2 番目の方法には、次の欠点があります。
document.write
そのようなスクリプトでは使用できません。そうした場合、そのようなステートメントによってドキュメントが完全に消去される可能性があります。
- 非同期実行は、ブラウザーがページの解析を終了したことを意味するものではありません。利用可能になるとすぐにスクリプトが実行されることを念頭に置いてください。
- 実行順序は保証されません。例: 挿入されたスクリプト タグを使用して「library.js」と「use-library.js」をロードすると、「use-library.js」が「library.js」の前にロードおよび実行される可能性があります。
そうは言っても、スクリプトをロードする別の方法があり、3 つのバリエーションがあります。
<script src="myScript.js" async></script>
<script src="myScript.js" defer></script>
<script src="myScript.js" async defer></script>
Steve Souders の仕事に関して: 彼はブロックせずにスクリプトをロードするための 6 つのテクニックを提案しました。HTML5 で導入された属性と属性は、Script DOM Element および Script Defer 手法をカバーしておりasync
、それらのブラウザーサポートは、他の手法を心配するのに十分です。defer