<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="21" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[21]</anchor-end> <code class="HTMLe" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">script</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要素</anchor>の <dfn><code class="HTMLa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">defer</anchor></code></dfn>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">属性</anchor>は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">構文解析</anchor>が完了してから<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">スクリプト</anchor>を実行するべきことを表します。</p><section><h1>仕様書</h1><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[6]</anchor-end> <cite xml:lang="en-GB-x-hixie">HTML Standard</cite> (<time>2016-02-16 01:30:20 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://html.spec.whatwg.org/#the-script-element">https://html.spec.whatwg.org/#the-script-element</anchor-external><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[7]</anchor-end> <strong><cite xml:lang="en-GB-x-hixie">HTML Standard</cite> (<time>2016-02-21 07:50:23 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://html.spec.whatwg.org/#attr-script-defer">https://html.spec.whatwg.org/#attr-script-defer</anchor-external></strong></li></ul></li></ul></refs></section><section><h1>意味</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[8]</anchor-end> <code class="HTMLa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">defer</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">属性</anchor>は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">スクリプト</anchor>がどう処理されるべきかを指定するものです。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;7</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[10]</anchor-end> <code class="HTMLe" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">script</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要素</anchor>の種別が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">古典スクリプト</anchor>の場合で、
<code class="HTMLa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">async</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">属性</anchor>が指定されない場合には、
<code class="HTMLa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">defer</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">属性</anchor>が指定されると、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">構文解析</anchor>と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">並列に</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">fetch</anchor> が行われ、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">構文解析</anchor>が完了してから評価されます。
<code class="HTMLa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">async</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">属性</anchor>も <code class="HTMLa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">defer</anchor></code>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">属性</anchor>も指定されない場合には、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">fetch</anchor> と評価が直ちに行われ、
その後<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">構文解析</anchor>が再開されます。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;7</anchor-internal></src></p></section><section><h1>属性値</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[3]</anchor-end> <code class="HTMLa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">defer</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">属性</anchor>は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ブール型属性</anchor>です。</p></section><section><h1>文脈</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="12" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[12]</anchor-end> <code class="HTMLe" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">script</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要素</anchor>の種別が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">古典スクリプト</anchor>で、
<code class="HTMLa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">async</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">属性</anchor>が指定されていない時、
<code class="HTMLa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">defer</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">属性</anchor>が効果を持ちます。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="17" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[17]</anchor-end> <code class="HTMLa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">defer</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">属性</anchor>は、 <code class="HTMLa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">async</anchor></code>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">属性</anchor>が指定されている場合であっても、 <code class="HTMLa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">async</anchor></code>
未対応の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者エージェント</anchor>での動作を考慮して、指定することができます <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;7</anchor-internal></src>。
しかしどの <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webブラウザー</anchor>も <code class="HTMLa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">async</anchor></code>
に対応した現在となっては、その必要ももう無さそうです。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[13]</anchor-end> <code class="HTMLe" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">script</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要素</anchor>の種別が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">モジュールスクリプト</anchor>の時は、
<code class="HTMLa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">defer</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">属性</anchor>は効果を持ちません <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;7</anchor-internal></src>。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="18" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[18]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">モジュールスクリプト</anchor>の時は、常に <code xmlns="http://www.w3.org/1999/xhtml" class="HTMLa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">defer</anchor></code>
を指定した<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">古典スクリプト</anchor>相当の動作となります。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[9]</anchor-end> <code class="HTMLe" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">script</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要素</anchor>の種別が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">データブロック</anchor>の時は、
<code class="HTMLa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">defer</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">属性</anchor>を使っては<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></anchor> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;6</anchor-internal></src>。</p></section><section><h1>処理</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="11" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[11]</anchor-end> <code class="HTMLe" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">script</anchor></code> を参照。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="25" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[25]</anchor-end> なお、初回処理時の値が使われるので、動的に変更しても、意味を持ちません <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;7</anchor-internal></src>。</p></section><section><h1><code class="DOMi" xml:lang="en">HTMLScriptElement</code> インターフェイス <code class="DOMa" xml:lang="en">defer</code> 属性</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="29" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[29]</anchor-end> <code class="DOMi" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTMLScriptElement</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">インターフェイス</anchor>の
<dfn><code class="DOMa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">defer</anchor></code></dfn> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IDL属性</anchor>は、
<code class="HTMLa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">defer</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">内容属性</anchor>を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">反映</anchor>しなければ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></anchor>
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;6</anchor-internal></src>。これは<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ブール値</anchor>として<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">反映</anchor>するものです。</p></section><section><h1>歴史</h1><section><h1>HTML4</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="15" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[15]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML4</anchor> 時代には <code class="HTMLa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">defer</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">属性</anchor>は定義こそされていましたが、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">スクリプト</anchor>の処理モデル自体が規定されていないため仕様書の説明もほとんど意味不明でした。
そのためか世間に流布している解説の類も混乱していました。唯一 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IE</anchor>
が実装していましたが、それが仕様書と合致しているのかもよくわからない状況でした。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[1]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML</anchor> の <code class="HTMLe"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">script</anchor></code> 要素の
<dfn><code class="HTMLa">defer</code> 属性</dfn>は、
そのスクリプトが文書内容を生成しないことを示します。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2]</anchor-end> 仕様書:<ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML 4</anchor><ul><li><anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="IW" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="HTML4:&quot;interact/scripts.html#adef-defer&quot;">IW:HTML4:&quot;interact/scripts.html#adef-defer&quot;</anchor-external></li></ul></li></ul></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="22" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[22]</anchor-end>
HTML 4 DTD の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">注釈</anchor> (参考) には
<q>UA may defer execution of script</q>
と書かれています。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[4]</anchor-end> この属性が指定されていると、そのスクリプトが文書の内容を生成しないことを意味します。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JavaScript</anchor> の <code class="JS"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">document</anchor>.<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">write</anchor></code> が文書内容生成に該当します。
UA はこの属性が指定されていれば、構文解析とレンダリングを続行できます。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">HTML 4 18.2.1</src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="14" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[14]</anchor-end> 仕様書は当たり前だと思って書いていないのでしょうが、
文書を読み込みながら構文解析しながらスクリプトを実行しつつレンダリングするという処理モデルが念頭にあるのだと思われます。
レンダリングする文書の内容は普通は鯖から送られてきたものですが、
<code class="HTMLe">script</code> 要素によって動的に生成されるかもしれません。
ですから、 <code class="HTMLe">script</code> 要素まで読取り・構文解析・レンダリングが到達したら、
そのスクリプトを実行して結果を反映して続きの構文解析・レンダリングを行わなければなりません。
しかし、スクリプトの内容が関数の定義や<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">事象取扱器</anchor>の登録なら、
その時点で行う必要はありません。そこで <code class="HTMLa">defer</code>
と指定しておけば、 UA は文書全体をレンダリングしてから実行することができます。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="23" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[23]</anchor-end></p><blockquote><p>Indicates that the user agent can defer processing of the script. See the defer attribute definition  in HTML 4.0.</p></blockquote><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="IW" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="DOM1:&quot;level-one-html.html#ID-93788534&quot;">IW:DOM1:&quot;level-one-html.html#ID-93788534&quot;</anchor-external></comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="24" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[24]</anchor-end></p><blockquote><p>Indicates that the user agent can defer processing of the script. See the defer attribute definition in HTML 4.01.</p></blockquote><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="IW" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="DOM2:&quot;HTML/html.html#ID-93788534&quot;">IW:DOM2:&quot;HTML/html.html#ID-93788534&quot;</anchor-external></comment-p><figure class="quote"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="19" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[19]</anchor-end> <em>JavaScript質問スレ</em> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://pc2.2ch.net/test/read.cgi/hp/1041701828/701-">http://pc2.2ch.net/test/read.cgi/hp/1041701828/701-</anchor-external></figcaption><blockquote><p>703 名前: Name_Not_Found  投稿日: 03/01/31 21:13 ID:???<pre>defer
【誤答例】
スクリプトに文書の表示を生成する要素を含まないことを宣言します。
この要素内のスクリプトが、文書の内容となるものを一切生成しない
(例えば、&quot;document.write&quot; などを使用していない)ことを表わします。
【正答例】
ブロック内にインラインスクリプトがなく、関数だけを含んでいることを示す。
スクリプトが必要になるまでその解析を延期することにより、
ドキュメントのロード時間が短くなり、結果的にパフォーマンスが良くなる</pre></p><p>704 名前: Name_Not_Found 投稿日: 03/01/31 22:08 ID:???<pre><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="703" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;703</anchor-internal>
http://www.w3.org/TR/1999/REC-html401-19991224/interact/scripts.html#adef-defer
http://msdn.microsoft.com/workshop/author/dhtml/reference/properties/defer.asp
http://www.microsoft.com/japan/developer/library/jpisdk/dhtml/references/html/SCRIPT.htm
つまり誤答例の HTML4 Spec. はウ゛ァカ仕様で
「関数だけを含む」と書いてないMSDN本家も厨房マニュアルで
正答例のMSDN日本語版スハ゛ラシイ!ってことでよろしいか? </pre></p></blockquote></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[20]</anchor-end>
<cite>ishinao.net/mylog - deferとWScript.Shell.Runの第3引数</cite> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://mylog.ishinao.net/id/1190">http://mylog.ishinao.net/id/1190</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="26" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[26]</anchor-end> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;20</anchor-internal> は <code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">404</anchor></code> なので...</p><p><cite>ishinao.net/mylog - deferとWScript.Shell.Runの第3引数</cite> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://web.archive.org/web/20050302231327/http://mylog.ishinao.net/id/1190">http://web.archive.org/web/20050302231327/http://mylog.ishinao.net/id/1190</anchor-external></p><blockquote><pre class="example code">&lt;script type=&quot;text/javascript&quot; defer&gt;
var shell = new ActiveXObject(&quot;WScript.Shell&quot;);
shell.run(&quot;notepad.exe&quot;, 1, true);
alert(&quot;end&quot;);
&lt;/script&gt;</pre><p>みたいなスクリプトで、shell.runの第3引数がtrue(終了するまで待つ)になっているのが効かないのはどうしてだろう? よりローカルな設定ほど強力であるというのが一般的だと思うんだけど、defer設定は何よりも強力ってことなのかなー。</p></blockquote><p>いってることがよくわからない。</p></section><section><h1>HTML5</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="27" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[27]</anchor-end>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Ian Hickson</anchor> は当初 <code class="HTMLa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">defer</anchor></code>
は相互運用可能に実装されていないとして <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML 5</anchor>
に含めないつもりだったようです (たぶん。) が、結局
<code class="HTMLa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">src</anchor></code> が指定されている場合にのみ利用できる<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">属性</anchor>として
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML 5</anchor> に残りました。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[16]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML5</anchor> が初めて<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">スクリプト</anchor>の明確な処理方法を定義し、
そこに <code class="HTMLa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">defer</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">属性</anchor>の規定も含めたことで、
ようやく <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IE</anchor> 以外の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webブラウザー</anchor>もこれを実装できるようになりました。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="28" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[28]</anchor-end>
<cite xml:lang="ja">「週報」を含むエントリー - Buzzurl <strong>[</strong>バザール<strong>]</strong> / ソーシャルブックマーク</cite> (<time>2008-06-08 00:26:54 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://buzzurl.jp/tag/%E9%80%B1%E5%A0%B1">http://buzzurl.jp/tag/%E9%80%B1%E5%A0%B1</anchor-external></p><pre class="HTML example code">&lt;script type=&quot;text/javascript&quot; defer=&quot;defer&quot;&gt;
	&lt;!--
(function(){
	var date = new Date();
	date.setTime(date.getTime() + (24*60*60*1000));
	var expires = '; expires=' + date.toGMTString();
	document.cookie = 'is_ssl=1' + expires + '; path=/; secure';
})();

(function(){
 	function beforeChange(container, active){
		if(!active){ return; }
		var bef = $(active).getAttribute(&quot;rel&quot;);
		if(!bef){ return; }
		var def = container.options.afterChange;
		container.options.afterChange = function(t,a){
			var aft = $(a).getAttribute(&quot;rel&quot;);
			if(aft){
				$(aft).value = $F(bef);
			}
			def(t,a);
			t.options.afterChange = def;
		};
	}
	Event.observe(window,'load',function(){
		new Control.Tabs($(&quot;search_tab_list&quot;), {&quot;defaultTab&quot;:'form_buzzurl', &quot;beforeChange&quot;:beforeChange});
	});
})();
function gnJoin(done, caption){
	if(done){ document.join_form.done.value = done; }
	if(caption){ document.join_form.caption.value = caption; }
	document.join_form.submit();
}
--&gt;
&lt;/script&gt; </pre><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="405" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[405]</anchor-end> <cite xml:lang="en-us">Firefox 3.1 for developers - MDC</cite> (<time>2009-02-08 18:25:06 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://developer.mozilla.org/ja/Firefox_3.1_for_developers#HTML_.e3.81.ae.e5.a4.89.e6.9b.b4.e7.82.b9">https://developer.mozilla.org/ja/Firefox_3.1_for_developers#HTML_.e3.81.ae.e5.a4.89.e6.9b.b4.e7.82.b9</anchor-external></p><blockquote><p>script 要素の defer 属性のサポートが実装されました。</p></blockquote><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="406" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[406]</anchor-end> <cite>script要素のdefer属性の実装 - Thousand Years</cite> (<time>2009-02-03 20:39:32 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://d.hatena.ne.jp/shogo4405/20070306/1173160753">http://d.hatena.ne.jp/shogo4405/20070306/1173160753</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="407" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[407]</anchor-end> <cite>Firefox_3.5_for_developers#Miscellaneous_new_features</cite> (Referenced: <time>2009-07-12T21:29:47+09:00</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://developer.mozilla.org/en/Firefox_3.5_for_developers#Miscellaneous_new_features">https://developer.mozilla.org/en/Firefox_3.5_for_developers#Miscellaneous_new_features</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="408" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[408]</anchor-end> <cite xml:lang="en">(X)HTML5 Tracking</cite>
(<time>2009-08-08 01:13:50 +09:00</time> 版)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://html5.org/tools/web-apps-tracker?from=3549&amp;to=3550">http://html5.org/tools/web-apps-tracker?from=3549&amp;to=3550</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="409" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[409]</anchor-end> <cite>IRC logs: freenode / #whatwg / 20090721</cite>
(<time>2009-09-26 21:27:34 +09:00</time> 版)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://krijnhoetmer.nl/irc-logs/whatwg/20090721">http://krijnhoetmer.nl/irc-logs/whatwg/20090721</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="410" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[410]</anchor-end> <cite>IRC logs: freenode / #whatwg / 20090807</cite>
(<time>2009-10-06 00:19:08 +09:00</time> 版)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://krijnhoetmer.nl/irc-logs/whatwg/20090807">http://krijnhoetmer.nl/irc-logs/whatwg/20090807</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="411" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[411]</anchor-end> <cite xml:lang="en">(X)HTML5 Tracking</cite>
(<time>2009-10-10 02:56:30 +09:00</time> 版)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://html5.org/tools/web-apps-tracker?from=4097&amp;to=4098">http://html5.org/tools/web-apps-tracker?from=4097&amp;to=4098</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="412" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[412]</anchor-end> <cite>IRC logs: freenode / #whatwg / 20100118</cite>
(<time>2010-01-20 07:35:37 +09:00</time> 版)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://krijnhoetmer.nl/irc-logs/whatwg/20100118#l-426">http://krijnhoetmer.nl/irc-logs/whatwg/20100118#l-426</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="413" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[413]</anchor-end> <cite>IRC logs: freenode / #whatwg / 20130528</cite>
( (<time>2013-05-29 23:52:26 +09:00</time> 版))
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://krijnhoetmer.nl/irc-logs/whatwg/20130528">http://krijnhoetmer.nl/irc-logs/whatwg/20130528</anchor-external></p></section><section><h1>モジュールスクリプトの導入</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[5]</anchor-end> <cite xml:lang="en">Add &lt;script type=&quot;module&quot;&gt; and module resolution/fetching/evaluation · whatwg/html@cd1a9fb</cite>
(<time>2016-01-21 22:16:10 +09:00</time> 版)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://github.com/whatwg/html/commit/cd1a9fb1e83f7d0bc30be8b34ecdaf444a0b19a4">https://github.com/whatwg/html/commit/cd1a9fb1e83f7d0bc30be8b34ecdaf444a0b19a4</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="30" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[30]</anchor-end> <cite xml:lang="en">(Re)disallow script defer/async attributes w/o src</cite>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">sideshowbarker</anchor>著, <time>2017-04-05 21:04:55 +09:00</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://github.com/whatwg/html/commit/3c5180a08f90a375c64f8191f32f8c7ddfec0ba3">https://github.com/whatwg/html/commit/3c5180a08f90a375c64f8191f32f8c7ddfec0ba3</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="31" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[31]</anchor-end> <cite xml:lang="en">Unclear whether setting defer attribute on script tags guarantees execution in document order · Issue #3176 · whatwg/html</cite>
(<time>2017-11-22 20:49:17 +09:00</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://github.com/whatwg/html/issues/3176">https://github.com/whatwg/html/issues/3176</anchor-external></p></section></section></body></html>