[解決済み】<script defer="defer">は具体的にどのように機能するのでしょうか?
質問
私はいくつかの
<script>
要素に依存し、そのうちのいくつかのコードは他の
<script>
要素で構成されています。私が見たのは
defer
属性は、コードブロックの実行を延期させることができるので、ここで便利に使うことができます。
試しにChromeで実行してみました。 http://jsfiddle.net/xXZMN/ .
<script defer="defer">alert(2);</script>
<script>alert(1)</script>
<script defer="defer">alert(3);</script>
しかし、それはアラート
2 - 1 - 3
. なぜ
1 - 2 - 3
?
解決方法は?
UPDATED 2/19/2016
この回答は古いと思ってください。新しいブラウザのバージョンに関連する情報については、この投稿の他の回答を参照してください。
基本的に、deferはブラウザに、そのスクリプトブロック内のjavascriptを実行する前に、準備が整うまで"待つように指示します。 通常、これは DOM の読み込みが完了し、document.readyState == 4 となった後です。
defer属性はinternet explorerに特有のものです。Windows 7 の Internet Explorer 8 では、JS Fiddle のテストページで私が見ている結果は、1 - 2 - 3 です。
ブラウザによって結果が異なる場合があります。
http://msdn.microsoft.com/en-us/library/ms533719(v=vs.85).aspx
IE は、一般に信じられているよりも頻繁に標準に従っていますが、実際には "defer" 属性は DOM Level 1 仕様で定義されています。 http://www.w3.org/TR/REC-DOM-Level-1/level-one-html.html
W3Cのdeferの定義です。 http://www.w3.org/TR/REC-html40/interact/scripts.html#adef-defer :
"このブール属性が設定されると、スクリプトが文書コンテンツを生成するつもりがないこと(例えば、javascriptの"document.write"がないこと)、したがってユーザエージェントが解析とレンダリングを継続できることを示すヒントを与えます"。
関連
-
[解決済み】webpack: モジュールが見つかりません。Error: 解決できない(相対パスで)
-
[解決済み】JavaScript ランタイムエラー:'$'が未定義です。
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] jQueryで要素が非表示になっているかどうかを確認するには?
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] inline/inline-block要素間のスペースを削除するにはどうすればよいですか?
-
[解決済み】なぜHTMLは "chucknorris "を色と見なすのか?
-
[解決済み】別のウェブページにリダイレクトするにはどうすればいいですか?
-
[解決済み】jQueryでチェックボックスがチェックされているかどうかを確認するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Facebook Graph API のクエリで with=location を使用すると "Uncaught (in promise) undefined" というエラーが発生する。
-
[解決済み】JavaScriptで':'(コロン)は何をするのか?
-
[解決済み】Uncaught ReferenceError: angular is not defined - AngularJSが動作しない。
-
[解決済み】JavaScriptのisset()に相当するもの
-
[解決済み】jquery $.ajaxオブジェクトのresponseJSONプロパティを取得する方法 [重複]。
-
[解決済み】JavaScriptのボタンonclickが機能しない
-
[解決済み】WebpackとBabelで「このファイルタイプを扱うには適切なローダーが必要な場合があります。
-
[解決済み】リソースはドキュメントと解釈されるが、MIMEタイプはapplication/zipで転送される
-
[解決済み】 Uncaught Reference Error: stLight is not defined (in Chrome only)
-
[解決済み】HTMLファイルのどこにJavaScriptを配置するか?