<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="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[3]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webブラウザー</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>、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">スクリプト</anchor>実行、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">レンダリング</anchor>その他の動作の相互作用は、
<dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>イベントループ</anchor><rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">event loop</rt></rubyb></dfn>によって説明されています。</p><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:">GUI</anchor> システムの同様の概念に倣って<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">イベントループ</anchor>と呼ばれていますが、
実際に <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webブラウザー</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:">JavaScript</anchor> で利用される <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DOM</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:">タスク</anchor>の処理の一部分であることもあります。</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="81" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[81]</anchor-end> 入出力装置やネットワークの入出力のような <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webブラウザー</anchor>外の“イベント”
は、それを処理する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タスク</anchor>として <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webブラウザー</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>に追加されることになります。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="207" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[207]</anchor-end> 1つの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webブラウザー</anchor>上では、複数の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webサイト</anchor>などが同時に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">レンダリング</anchor>・動作しています。単一の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webページ</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:">並行</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="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[5]</anchor-end> <strong><cite xml:lang="en-US-x-hixie">HTML Standard</cite> (<time>2012-03-28 21:58:58 +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://www.whatwg.org/specs/web-apps/current-work/#event-loops">http://www.whatwg.org/specs/web-apps/current-work/#event-loops</anchor-external></strong></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="40" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[40]</anchor-end> <strong><cite xml:lang="en-US-x-hixie">HTML Standard</cite> (<time>2012-03-28 21:58:58 +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://www.whatwg.org/specs/web-apps/current-work/#the-event-loop">http://www.whatwg.org/specs/web-apps/current-work/#the-event-loop</anchor-external></strong></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="204" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[204]</anchor-end> <cite xml:lang="en-GB-x-hixie">HTML Standard</cite> (<time>2015-05-06 10:42:35 +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/#worker-event-loop">https://html.spec.whatwg.org/#worker-event-loop</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="41" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[41]</anchor-end> <strong><cite xml:lang="en-US-x-hixie">HTML Standard</cite> (<time>2012-03-28 21:58:58 +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://www.whatwg.org/specs/web-apps/current-work/#run-a-worker">http://www.whatwg.org/specs/web-apps/current-work/#run-a-worker</anchor-external></strong></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="44" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[44]</anchor-end> <cite xml:lang="en-US-x-hixie">HTML Standard</cite> (<time>2012-03-28 21:58:58 +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://www.whatwg.org/specs/web-apps/current-work/#scriptTagXSLT">http://www.whatwg.org/specs/web-apps/current-work/#scriptTagXSLT</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="200" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[200]</anchor-end> <cite xml:lang="en-US-x-hixie">HTML Standard</cite> (<time>2014-05-08 22:12:35 +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://www.whatwg.org/specs/web-apps/current-work/#serializability-of-script-execution">http://www.whatwg.org/specs/web-apps/current-work/#serializability-of-script-execution</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="90" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[90]</anchor-end> <cite xml:lang="en-GB-x-hixie">HTML Standard</cite> (<time>2015-04-25 04:40:19 +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/#termination-nesting-level">https://html.spec.whatwg.org/#termination-nesting-level</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="92" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[92]</anchor-end> <cite xml:lang="en-US-x-hixie">HTML Standard</cite> (<time>2012-03-28 21:58:58 +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://www.whatwg.org/specs/web-apps/current-work/#perform-a-microtask-checkpoint">https://www.whatwg.org/specs/web-apps/current-work/#perform-a-microtask-checkpoint</anchor-external></li></ul></refs></section><section><h1>イベントループ</h1><p><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> <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:">スクリプト</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:">イベントループ</anchor>を使わなければ<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">なりません</MUST>。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">イベントループ</anchor>は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者エージェント</anchor>毎に少なくても1つなければ<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">なりません</MUST>。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">関係する類似起源閲覧文脈の単位</anchor>毎に高々1つの<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="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;5</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="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[8]</anchor-end> つまり、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者エージェント</anchor>全体で1つの<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>に分けることもできるのですが、
その分け方として、 (<code xmlns="http://www.w3.org/1999/xhtml" class="JS" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">document.domain</anchor></code> を考慮した) 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">起源</anchor>ごとのグループを分離してはいけない、ということです。</comment-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="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[9]</anchor-end> 仕様上明記されていませんが、おそらくここでいう「<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者エージェント</anchor>」
の単位は恣意的に決めることができ、
例えば通常モードと秘密モードがあり、両者で開いている <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web頁</anchor>同士が同じ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">起源</anchor>であっても <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JavaScript</anchor>
でアクセスできないなら、これは2つの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者エージェント</anchor>であり、
この規定に違反せずに別々の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">イベントループ</anchor>を有することができるはずです。</comment-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="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[7]</anchor-end> 1つの<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:">関連する類似起源閲覧文脈の単位</anchor>に属するような
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">navigate</anchor> が発生した時に複雑なことになります。 HTML 仕様はそれをどう処理するか現在定義していません。
<src><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;5</anchor-internal></src> (複雑なこと、というのは具体的には示されていません。)</comment-p><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> <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:">閲覧文脈</anchor>は1つ<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="91" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[91]</anchor-end> <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:">ワーカー</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><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="93" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[93]</anchor-end> <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><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="71" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[71]</anchor-end> 「<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要素</anchor>の<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>イベントループ</anchor></f>」は明確に定義されていませんが<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要素</anchor>の<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>節点文書</anchor></f>が属する<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><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">用例:<refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><cite xml:lang="en-US-x-hixie">HTML Standard</cite> (<time>2012-11-16 20:26:18 +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://www.whatwg.org/specs/web-apps/current-work/#commit-the-scratch-bitmap">http://www.whatwg.org/specs/web-apps/current-work/#commit-the-scratch-bitmap</anchor-external></li></ul></refs></comment-p><section><h1>状態</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="55" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[55]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">イベントループ</anchor>は次の状態を持ちます。<figure class="list members"><dl><dt><f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">種別</f></dt><dd>メインの<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>のいずれかです。</dd><dt><f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タスクキュー群</f></dt><dd>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">イベントループ</anchor>は、1つ以上の<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="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;5</anchor-internal></src>。
個数と使い分けは実装に依存します。</dd><dt><f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マイクロタスクキュー</f></dt><dd></dd><dt><f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>閲覧文脈</anchor>群</f>または<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>ワーカー</anchor></f></dt><dd>
<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> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ワーカー</anchor>以外の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">イベントループ</anchor>は、最低1つ<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="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;5</anchor-internal></src>。
<anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="42" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[42]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ワーカー</anchor> (<code class="DOMi" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">WorkerGlobalScope</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="40" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;40</anchor-internal>, <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="204" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;204</anchor-internal></src>。</dd><dt><f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>文書</anchor>群</f></dt><dd>
<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>で参照されます。</dd><dt><f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">現在走っているタスク</f></dt><dd>
動作中の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タスク</anchor>または<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マイクロタスク</anchor>が高々1つ存在します。</dd><dt><f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>一時停止</anchor>中</f></dt><dd></dd><dt><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">termination nesting level</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="90" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;90</anchor-internal></src></dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">モーダルダイアログ</anchor>の表示を制御するものです。</dd><dt><f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マイクロタスクチェックポイントを行っている</f></dt><dd></dd><dt><f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>環境設定群オブジェクト</anchor>群</f></dt><dd>
<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>有責イベントループ</anchor></f>が本<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="92" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;92</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>で参照されます。</dd><dt><f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>JavaScript実行文脈スタック</anchor></f></dt><dd>
(どの仕様書も明言していないようですが、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">イベントループ</anchor>ごとに1つあると思われます。)</dd><dt><f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">バックアップ現職設定群オブジェクトスタック</f></dt><dd></dd><dt><f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><code xmlns="http://www.w3.org/1999/xhtml" class="DOMi" xml:lang="en">BroadcastChannel</code>群</f></dt><dd></dd><dt><f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">最終アイドル期間締切</f></dt><dd></dd><dt><f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">活性スクリプト</f></dt><dd></dd><dt><f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">イベントループ開始</f></dt><dd></dd><dt><f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">イベントループ終了</f></dt><dd></dd></dl><history xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><dl xmlns="http://www.w3.org/1999/xhtml"><dt><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> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ストレージミューテックス</anchor></dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ストレージ</anchor>へのアクセスを制御するための<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ミューテックス</anchor>を保持した状態になることがあります。<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="39" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[39]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ストレージミューテックス</anchor>は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者エージェント</anchor>全体で1つなので、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ストレージミューテックス</anchor>の解放待ちのために<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">イベントループ</anchor>全体がブロックされることがあります。</comment-p></dd></dl></history></figure></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="161" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[161]</anchor-end> <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:">タスク</anchor>は高々1つであり、
<dfn><f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><rubyb><anchor>現在走っているタスク</anchor><rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">currently running task</rt></rubyb></f></dfn>と呼ばれます。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">現在走っているタスク</anchor>の初期値は <code>null</code> です。 <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="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;5</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="163" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[163]</anchor-end> <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-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;13</anchor-internal>)
の他、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マイクロタスクチェックポイント</anchor>によって<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マイクロタスク</anchor>に設定される場合もあります。</comment-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="63" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[63]</anchor-end> <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:">null</anchor> のままです。</comment-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="195" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[195]</anchor-end> <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:">タスク</anchor>の種類を調べるため参照されます。
例えば <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">allowed to show a popup</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:">タスク</anchor>の処理中かどうかで分岐します。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="217" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[217]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">スクリプトを走らせる準備</anchor>は<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">現在走っているタスク</f>を参照しています。</p></section><section><h1>実行</h1><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> メインやワーカーの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">イベントループ</anchor><var>イベントループ</var>は、
次のようにしなければ<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="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;5</anchor-internal></src>。<figure class="steps"><ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="233" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[233]</anchor-end> 繰り返し、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="235" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[235]</anchor-end> <var>イベントループ</var>の実行中断中 (<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="30" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;30</anchor-internal>, <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="218" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;218</anchor-internal>) でなければ、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="74" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[74]</anchor-end> <var>タスク</var>を、
<var>イベントループ</var>における<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タスク</anchor>の処理 (<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="75" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;75</anchor-internal>) をした結果に設定します。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="184" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[184]</anchor-end> <var>イベントループ</var>について、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マイクロタスクチェックポイントを行います</anchor>。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="248" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[248]</anchor-end> <var>今</var>を、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">現在高分解能時刻</anchor>に設定します。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="249" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[249]</anchor-end> 
<var>タスク開始時刻</var>と<var>タスク</var>と<var>今</var>について、
タスクの時間長を報告します
(<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="250" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;250</anchor-internal>)。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="186" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[186]</anchor-end> <var>文書群</var>を、
<var>イベントループ</var>と<var>今</var>について、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">レンダリングの更新</anchor>をした結果に設定します。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="133" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[133]</anchor-end> <var>イベントループ</var>について、
アイドル時の処理 (<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="135" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;135</anchor-internal>) を実行します。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="134" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[134]</anchor-end> <var>イベントループ</var>と<var>文書群</var>と<var>今</var>について、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">レンダリングの更新</anchor>の時間長を報告します
(<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="257" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;257</anchor-internal>)。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="187" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[187]</anchor-end> <var>イベントループ</var>の終了条件 (<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="108" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;108</anchor-internal>) を満たす場合、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="188" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[188]</anchor-end> <var>イベントループ</var>を<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">破棄<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">destroy</rt></rubyb>してここで停止します。</li></ol></li></ol></li></ol></li></ol></figure></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="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:">イベントループ</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:">算法</anchor>についても、結果を何らかの形で <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DOM</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:">算法</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:">タスク</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:">同期区間</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:">スレッド</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:">イベントループ</anchor>の中で交互に処理を行うことになるのでしょう。
<weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">(単一<anchor>スレッド</anchor>の <anchor>Webブラウザー</anchor>があるのか知りませんが...)</weak></comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="53" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[53]</anchor-end> <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:">著者</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:">アニメーションフレームコールバック</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><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="130" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[130]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">アイドル状態</anchor>になったと判定すると、 <code class="DOMm" xml:lang="en">requestIdleCallback</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><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">アイドル状態</anchor>を参照。</comment-p></section><section><h1>タスクの実行</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="75" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[75]</anchor-end> <var>イベントループ</var>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タスク</anchor>の処理は、次のようにします。</p><figure class="steps"><ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="162" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[162]</anchor-end> 「手順1」 (<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="48" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;48</anchor-internal>) の処理を行います。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="238" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[238]</anchor-end> <var>タスク</var>を、<var>イベントループ</var>について<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タスクキューからタスクを選択</anchor>した結果に設定します。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="239" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[239]</anchor-end> <var>タスク</var>が <code>null</code> で<em>ない</em>場合、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="230" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[230]</anchor-end> <var>タスク開始時刻</var>を、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">現在高精度時刻</anchor>に設定します。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="179" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[179]</anchor-end> <var>イベントループ</var>の<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>現在走っているタスク</anchor></f>を、
<var>タスク</var>に設定します <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="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;5</anchor-internal></src>。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="180" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[180]</anchor-end> <var>タスク</var>の<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">手順群</f>を実行します <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="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;5</anchor-internal></src>。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="181" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[181]</anchor-end> <var>イベントループ</var>の<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>現在走っているタスク</anchor></f>を、 null に設定します
<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="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;5</anchor-internal></src>。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="256" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[256]</anchor-end> <var>タスク</var>を返します。</li></ol></li></ol></figure><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="76" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[76]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">イベントループ</anchor>の一巡の間に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タスク</anchor>は高々1つだけ実行されます。
それに対して<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:">マイクロタスク</anchor>が
「マイクロ」である所以です。</comment-p><history xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="182" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[182]</anchor-end> かつては<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></history><history xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="183" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[183]</anchor-end> 
かつては<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タスク</anchor>を実行した後で<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タスクキュー</anchor>から削除すると規定されていました。
<sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <anchor>タスクキューからタスクを選択</anchor> </sw-see></p></history></section><section><h1>手順1到達時点の状態</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="48" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[48]</anchor-end> 次に示すものは、「<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">最後に<anchor>イベントループ</anchor>の手順1に到達した時<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">last time the event loop reached step 1</rt></rubyb>」
の状態を定義に含めています。<figure class="list"><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="49" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[49]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">スクリプトをブロックしているスタイルシート</anchor></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="50" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[50]</anchor-end> <code class="DOMa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ended</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>)</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="57" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[57]</anchor-end> <code class="DOMi" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">WebSocket</anchor></code> の <code class="DOMa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">bufferedAmount</anchor></code></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="58" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[58]</anchor-end> <code class="DOMi" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">WebSocket</anchor></code> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ごみ収集</anchor></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="65" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[65]</anchor-end> <code class="HTMLe" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">embed</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:">potentially active</anchor><ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文書中</anchor>にあるか否か</li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">レンダリング中</anchor>であるか否か</li></ul></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="208" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[208]</anchor-end> 選択状態にある <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">video track</anchor> や <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">audio track</anchor> の決定<ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="209" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[209]</anchor-end> <cite xml:lang="en">Web Applications 1.0 r8673     Make sure that we say that enabling audio tracks and selecting video tracks is all synchronised with the event loop</cite> (<time>2014-06-12 07:25:00 +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/r/8673">http://html5.org/r/8673</anchor-external></li></ul></li></ul></figure></p><history xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="56" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[56]</anchor-end> かつては
「<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">最後に<anchor>イベントループ</anchor>が<anchor>タスク</anchor>を実行しはじめた時<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">last time the event loop started executing a task</rt></rubyb>」
とも呼ばれていましたが、 <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="48" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;48</anchor-internal> の表現に統一されました。</p></history><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="158" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[158]</anchor-end> 次に示すものは、「<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">次に<anchor>イベントループ</anchor>の手順1に到達する前<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">before the next time the event loop reaches step 1</rt></rubyb>」を定義に含めています。<figure class="list"><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="51" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[51]</anchor-end> <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>に制約があればその機会にこれをすべて解放するのがよいとされています
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><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://www.whatwg.org/specs/web-apps/current-work/#best-practices-for-implementors-of-media-elements">http://www.whatwg.org/specs/web-apps/current-work/#best-practices-for-implementors-of-media-elements</anchor-external></src>。</li></ul></figure></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="68" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[68]</anchor-end> また、次に示すものは、同じ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タスク</anchor>内であれば同じ結果になることが求められています。<figure class="list"><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="69" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[69]</anchor-end> <code class="DOMa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">canvasResolution</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></li></ul></figure></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="211" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[211]</anchor-end> 同じ「<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>が中断された場合、
再開後に同じ値であるとは限りません。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="66" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[66]</anchor-end> これらは、次の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">event loop level 1</anchor> に到達する前に実装が保持する値を更新したり、
新たな状態を反映させるための処理を行ったりする必要があります。</p><example xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="124" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[124]</anchor-end> <code class="HTMLe" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">embed</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>する必要があるかもしれません。</p></example></section><section><h1>アイドル時の処理</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="135" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[135]</anchor-end> 
<var>イベントループ</var>の<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="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;5</anchor-internal></src>。</p><figure class="steps"><ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="136" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[136]</anchor-end> 次の<em>すべて</em>を満たす場合、<ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="138" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[138]</anchor-end> <var>イベントループ</var>が <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">window event loop</anchor> であり、</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="141" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[141]</anchor-end> <var>イベントループ</var>の<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>タスクキュー</anchor>群</f>のどの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タスクキュー</anchor>にも、
<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文書</f>の<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">完全に活性</f>が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">真</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タスク</anchor>が含まれ<em>ず</em>、</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="142" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[142]</anchor-end> <var>イベントループ</var>の<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マイクロタスクキュー</f>が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">空<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">list empty</title></anchor>であり、</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="147" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[147]</anchor-end> <var>イベントループ</var>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">閲覧文脈</anchor>のいずれも<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">レンダリング機会</anchor>を有さない</li></ul><ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="148" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[148]</anchor-end> <var>イベントループ</var>の各<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">閲覧文脈</anchor><var>閲覧文脈</var>について、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="153" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[153]</anchor-end> <var>閲覧文脈</var>の <f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><code xmlns="http://www.w3.org/1999/xhtml">Window</code></f> について、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">アイドル期間開始アルゴリズム</anchor>を実行します。</li></ol></li></ol></li></ol></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="70" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[70]</anchor-end> <code class="DOMm" xml:lang="en">requestIdleCallback</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="212" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[212]</anchor-end> <dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>イベントループをスピン</anchor><rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">spin the event loop</rt></rubyb></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>に制御を戻し、
指定した条件<var>条件</var>が達成された後に再開するものです。</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> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">イベントループ</anchor><var>イベントループ</var>の<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="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;5</anchor-internal></src>。</p><figure class="steps"><ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="164" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[164]</anchor-end> <var>タスク</var>を、<var>イベントループ</var>の<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>現在走っているタスク</anchor></f>に設定します。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="165" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[165]</anchor-end> <var>タスク源</var>を、<var>タスク</var>の<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">源<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">タスク源</title></f>に設定します。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="166" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[166]</anchor-end> <var>旧スタック</var>を、<var>イベントループ</var>の<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>JavaScript実行文脈スタック</anchor></f>の複製に設定します。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="167" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[167]</anchor-end> <var>イベントループ</var>の<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>JavaScript実行文脈スタック</anchor></f>を空にします。</li><li><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> <var xml:lang="en">タスク</var>を停止させます。<ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="269" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[269]</anchor-end> <var>タスク</var>を停止させると呼び出し元である<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">イベントループ</anchor>の手順群の次の手順へと進みます。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="169" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[169]</anchor-end> つまり<var>イベントループ</var>について<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マイクロタスクチェックポイント</anchor>が実行されることになります。
<sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <anchor>イベントループ</anchor> </sw-see></li></ul></li></ol></figure><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="173" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[173]</anchor-end> <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:">マイクロタスク</anchor>や<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">複合マイクロタスク部分タスク</anchor>から呼ばれることもあります。</comment-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="213" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[213]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JavaScript実行文脈</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:">イベントループ</anchor>や<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マイクロタスクチェックポイント</anchor>などの次のステップへと進むことになります。</comment-p><history xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="168" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[168]</anchor-end> かつては <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">global script clean-up jobs</anchor> の実行もここで行われていました。</p></history><p><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> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">並列に</anchor>、<var>条件</var>が成立するのを待ちます。
成立したら、次のようにしなければ<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">なりません</MUST>。 <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="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;5</anchor-internal></src></p><figure class="steps"><ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="270" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[270]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タスク</anchor>を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タスクキューに追加</anchor>します。<figure class="list members"><dl><dt><var>源</var></dt><dd><var>源</var></dd><dt><var>手順群</var></dt><dd><figure class="steps"><ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="170" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[170]</anchor-end> <var>イベントループ</var>の<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>JavaScript実行文脈スタック</anchor></f>を、<var>旧スタック</var>に設定します。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="171" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[171]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">スピン</anchor>の呼び出し元の続きの手順群を実行します。</li></ol></figure></dd></dl></figure></li></ol></figure><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="140" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[140]</anchor-end> <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:">スピン</anchor>後に新たに追加された<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="25" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[25]</anchor-end> <code class="JS" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">document.close</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><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">詳しくは <code xmlns="http://www.w3.org/1999/xhtml" class="JS" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">document.close</anchor></code> 参照。</comment-p><history xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="205" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[205]</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="160" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;160</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>された後、次に<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>に制約があればその機会にこれをすべて解放するのがよいとされていました
<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="159" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;159</anchor-internal></src>。</p><refs><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="159" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[159]</anchor-end> <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://www.whatwg.org/specs/web-apps/current-work/#best-practices-for-implementors-of-media-elements">http://www.whatwg.org/specs/web-apps/current-work/#best-practices-for-implementors-of-media-elements</anchor-external></li></ul></refs></history><section><h1>スピンする状況</h1><figure class="list"><figcaption><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> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">スピン</anchor>する状況</figcaption><ul><li><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> <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>の処理</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="210" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[210]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">stop parsing</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:">delay the loading</anchor> 待ち)</li></ul><history 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="22" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[22]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">update the session history with the new page</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>するタイミング待ち)</li><li><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> <code class="DOMm" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">showModalDialog</anchor></code> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ダイアログ</anchor>が閉じられるの待ち)</li></ul></history></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="125" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[125]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">stops parsing</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>を使わない形に読み替えられます。
<sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <anchor>stops parsing</anchor> </sw-see></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="231" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[231]</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>の処理の場合、
<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>を求める<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:">スピン</anchor>の<var>条件</var>達成により追加される継続<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タスク</anchor>が先に実行されることになります。</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="232" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[232]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タスク</anchor>を実行しない、という処理の詳細が <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML Standard</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:">タスク</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>に陥る、と解釈できなくもないのですが、明らかに誤っています。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="172" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[172]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML Standard</anchor> では <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="17" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;17</anchor-internal> の通り<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タスク</anchor>の実行を中断して<var>条件</var>が成立してから再開する形を採っていますが、
実際の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webブラウザー</anchor>では <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JavaScriptエンジン</anchor>の仕様上そのように中断させることは難しく、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">イベントループ</anchor>自体を再帰的に実行しているようです。</p><history xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><refs><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="139" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[139]</anchor-end> <cite><strong>[</strong>whatwg<strong>]</strong> Bug in 12.2.5.4.8 (The &quot;text&quot; insertion mode) when invoking the &quot;spin the event loop&quot; algorithm</cite> (<time>2013-10-01 22:14: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="http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2013-October/040949.html">http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2013-October/040949.html</anchor-external></li></ul></refs><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="80" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[80]</anchor-end> このうち <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">update the session history with the new page</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:">スピン</anchor>前の処理が後の処理に直接的に影響を及ぼしてもいないため、
実質的に次の処理のための<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タスク</anchor>をキューに入れるのと変わらないと思われます。</p></history></section></section><section><h1>字句化器のブロック</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="59" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[59]</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>する場合、その直前に <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML</anchor>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">字句化器</anchor>や<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XML構文解析器</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:">構文解析器</anchor>を使うような<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タスク</anchor>は実行されない、
とされています。</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="60" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[60]</anchor-end> ブロックすると実行されない、という仕組みは十分に説明されていないように思えますが、
<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:">タスク</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:">タスク源</anchor>の<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="152" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[152]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML字句化器</anchor>や <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XML構文解析器</anchor>を使う<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タスク</anchor>というのは、どうやら実際には、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML</anchor> や <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XML</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>のことを指しているようです。
つまりブロックされている間はそれ以上先に<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:">HTML構文解析器</anchor>や<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XML構文解析器</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:">HTML文書</anchor>における <code class="JS" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">document.write</anchor></code>/<code class="JS" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">document.writeln</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構文解析器</anchor>を呼び出さないことになっています。
(なのでいずれにせよ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">字句化器</anchor>は止まって先に進みません。)</p><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="150" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[150]</anchor-end> <cite xml:lang="en-US-x-hixie">HTML Standard</cite> (<time>2014-01-31 21:26:12 +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://www.whatwg.org/specs/web-apps/current-work/#parsing-main-incdata">http://www.whatwg.org/specs/web-apps/current-work/#parsing-main-incdata</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="151" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[151]</anchor-end> <cite xml:lang="en-US-x-hixie">HTML Standard</cite> (<time>2014-01-31 21:26:12 +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://www.whatwg.org/specs/web-apps/current-work/#parsing-xhtml-documents">http://www.whatwg.org/specs/web-apps/current-work/#parsing-xhtml-documents</anchor-external></li></ul></refs></section><section><h1>一時停止</h1><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 xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者エージェント</anchor>を<dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">一時停止<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">pause</rt></rubyb></dfn>する場合、
次のようにしなければ<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="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;5</anchor-internal></src><figure class="steps"><ol><li><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> <del><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:">同期区間</anchor>を実行してから、 (適切であれば) <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">非同期</anchor>算法の実行を再開します。</del><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="199" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[199]</anchor-end> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="198" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;198</anchor-internal> により削除されました。</li></ul></li><li><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> 必要があれば、 <code class="DOMi" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Document</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:">レンダリングの更新</anchor>)。</li><li><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> 条件が満たされるまで待ちます。<ul><li><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> <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>し、
現在走っている<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>。</li><li><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> <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>ですが、
<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>です。</li></ul></li></ol></figure></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="127" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[127]</anchor-end> <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><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="223" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[223]</anchor-end> <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:">アニメーション</anchor>は続行するべきかもしれません。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="32" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[32]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">一時停止</anchor>する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">算法</anchor>には次のものがあります。<figure class="list"><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="33" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[33]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">prompt to unload a document</anchor> (<code class="DOMe" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">beforeunload</anchor></code> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ダイアログ</anchor>)</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="34" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[34]</anchor-end> <del><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">obtain the storage mutex</anchor> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">storage mutex</anchor> 待ち)</del></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="35" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[35]</anchor-end> <code class="JS" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">alert</anchor></code></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="36" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[36]</anchor-end> <code class="JS" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">confirm</anchor></code></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="37" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[37]</anchor-end> <code class="JS" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">prompt</anchor></code></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="38" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[38]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">printing steps</anchor> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">印刷</anchor>)</li></ul></figure></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="220" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[220]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">pause<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">pause (event loop)</title></anchor> 中は他の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タスク</anchor>を実行できないというのが仕様上の規定ですが、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Firefox</anchor> では<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">モーダルダイアログ</anchor>の表示中に <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Bookmarklet</anchor>
を実行できる (つまり <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">navigate</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>が実行される)
ようです。 <time>2015-09-11T11:19:54.000Z</time></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="243" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[243]</anchor-end> 同じ<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:">タスク</anchor>は実行できなくなります。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="221" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[221]</anchor-end> 1つの<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:">一時停止</anchor>中でも、他の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">イベントループ</anchor>は動作するかもしれません。</p><example xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="222" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[222]</anchor-end> ある<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:">起源</anchor>の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webページ</anchor>は通常通り表示・操作できるのが好ましいと考えられます。</p></example><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="237" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[237]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML Standard</anchor> は、2016年5月以来、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web互換性</anchor>に悪影響を及ぼさない限りにできるだけこの“異常”な挙動を除去できないか試みることを
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webブラウザー</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="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;5</anchor-internal></src>。</p></section><section><h1>一時中断</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="218" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[218]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ワーカー</anchor>は、<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>一時中断</anchor><rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">suspend</rt></rubyb>されることがあります。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">イベントループ</anchor>の実行も中断されるようです。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><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="102" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[102]</anchor-end> <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:">プラットフォーム</anchor>が強制的に <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webブラウザー</anchor>の動作を中断させたり、
そこから復帰させたりすることがあります。これを <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webブラウザー</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:">タイマー</anchor>の処理などで不整合が生じないように配慮が必要です。</p></section><section><h1>破棄</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="108" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[108]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">イベントループ</anchor>は、存在する間動作する <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><cite xmlns="http://www.w3.org/1999/xhtml">HTML Standard</cite></src>
(つまり存在しなくなったら停止する) とされています。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="129" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[129]</anchor-end> <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:">破棄<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">閲覧文脈を捨てる</title></anchor>された時、
ということになると思われます。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="131" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[131]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ワーカー環境</anchor>についてはより明確に規定されています。
<var>イベントループ</var>の<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>タスクキュー</anchor>群</f>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タスク</anchor>がなくなり、
<var>イベントループ</var>の <code>WorkerGlobalScope</code> の<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">閉じ中</f>フラグが<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">真</anchor>の場合
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><cite xmlns="http://www.w3.org/1999/xhtml">HTML Standard</cite></src>、破棄されます。
(その後<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="286" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[286]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">イベントループ</anchor>は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">変数</anchor><var>タスク開始時刻</var>により経過時間を保持しています。</p><history xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="225" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[225]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">イベントループ</anchor>は、
<dfn><f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><rubyb><anchor>イベントループ開始</anchor><rt xmlns="http://www.w3.org/1999/xhtml">event loop begin</rt></rubyb></f></dfn>と<dfn><f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><rubyb><anchor>イベントループ終了</anchor><rt xmlns="http://www.w3.org/1999/xhtml">event loop end</rt></rubyb></f></dfn>を持ちます。
<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="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;5</anchor-internal></src>
ともに初期値は <code>null</code> です。</p></history><hr></hr><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="250" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[250]</anchor-end> 
<var>タスク開始時刻</var>と<var>タスク</var>と<var>今</var>について<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="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;5</anchor-internal></src></p><figure class="steps"><ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="251" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[251]</anchor-end> 
<var>最上位閲覧文脈群</var>を、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">空集合</anchor>に設定します。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="252" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[252]</anchor-end> 
<var>タスク</var>の<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">スクリプト評価環境設定群オブジェクト集合</f>中の各<var>設定群</var>について<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">それぞれ<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">for each</title></anchor>、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="253" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[253]</anchor-end> 
<var>最上位閲覧文脈群</var>に、
<var>設定群</var>の<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">最上位閲覧文脈</f>を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">末尾に追加</anchor>します。</li></ol></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="254" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[254]</anchor-end> 
<var>タスク開始時刻</var>、
<var>今</var>、
<var>最上位閲覧文脈群</var>,
<var>タスク</var>について、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">report long tasks</anchor>
します。</li></ol></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="255" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[255]</anchor-end> 
この手順は、<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-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="74" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;74</anchor-internal>)
の後に呼び出されます。</p><ed xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="272" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[272]</anchor-end> 仕様書では<var xmlns="http://www.w3.org/1999/xhtml">タスク</var>が <code xmlns="http://www.w3.org/1999/xhtml">null</code> でもこれが呼び出されるケースがあります。</ed><hr></hr><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="257" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[257]</anchor-end> 
<var>イベントループ</var>と<var>文書群</var>と<var>今</var>について<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="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;5</anchor-internal></src></p><figure class="steps"><ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="259" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[259]</anchor-end> 
<var>レンダリング終了時刻</var>を、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">現在高精度時刻</anchor>に設定します。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="260" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[260]</anchor-end> 
<var>最上位閲覧文脈群</var>を、
<var>文書群</var>中の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文書</anchor>のうち<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">完全に活性</f>なものすべての<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">最上位閲覧文脈群</f>すべての<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">集合</anchor>に設定します。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="261" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[261]</anchor-end> 
<var>今</var>,
<var>レンダリング終了時刻</var>,
<var>最上位閲覧文脈群</var>について、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">report long tasks</anchor>
します。</li></ol></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="258" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[258]</anchor-end> 
この手順は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">レンダリングの更新</anchor>の実行後に呼び出されます。</p><hr></hr><history xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="283" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[283]</anchor-end> 
一時は次のような規定もありましたが、
<time>令和元(2019)年<attrvalue xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">2019</attrvalue></time>の改定で削除されました。
<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="280" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;280</anchor-internal></src></p><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="234" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[234]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者エージェント</anchor>が<var>イベントループ</var>を実行しなかった<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="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;5</anchor-internal></src></p><figure xmlns="http://www.w3.org/1999/xhtml" class="steps"><ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="244" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[244]</anchor-end> 
<var>イベントループ</var>の<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">イベントループ開始</f>を、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">現在高精度時刻</anchor>に設定します。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="245" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[245]</anchor-end> 
<var>イベントループ</var>の<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">イベントループ終了</f>が <code>null</code> で<em>ない</em>場合、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="246" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[246]</anchor-end> 
<var>最上位閲覧文脈群</var>を、
<var>イベントループ</var>に関連付けられた<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文書</f>すべての<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">最上位閲覧文脈</f>すべての<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">集合</anchor>に設定します。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="247" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[247]</anchor-end> 
<var>イベントループ</var>の<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">イベントループ開始</f>、
<var>イベントループ</var>の<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">イベントループ終了</f>、
<var>最上位閲覧文脈群</var>について、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">report long tasks</anchor>
します。</li></ol></li></ol></figure><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="240" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[240]</anchor-end> 
この手順は、<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><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="284" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[284]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">イベントループ</anchor>を実行しなかった時間とは <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">GC</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="280" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;280</anchor-internal></src>。</p></history></section></section><section><h1>構文解析器との関係</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="61" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[61]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML</anchor> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">構文解析器</anchor> <weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">(や、ちゃんと規定した仕様書が存在していませんが、 <anchor>XML</anchor> の<anchor>構文解析器</anchor>)</weak>
は、それ自体は<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><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="62" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[62]</anchor-end> <code class="HTMLa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">innerHTML</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>からデータを取得する度に順次生成されていく一連の<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="149" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[149]</anchor-end> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="24" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;24</anchor-internal> や <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="59" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;59</anchor-internal> の通り、<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:">字句化器</anchor>がブロックされたりすることがあります。</p></section><section><h1>スクリプトとの関係</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="201" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[201]</anchor-end> <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="200" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;200</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>が異なる場合や<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="DOMm" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">postMessage</anchor></code>
など限られています。</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="202" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[202]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">スクリプト</anchor>の実行時間を計測したり、
サーバー側で何らかの情報交換を行ったりして間接的に他の<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="203" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[203]</anchor-end> これによって<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:">Webブラウザー</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="43" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[43]</anchor-end> いくつかの<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:">アルゴリズム</anchor>が実行されていることがあります。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="47" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[47]</anchor-end> <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:">同期区間</anchor>により “<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">join</anchor>” されることがあります。</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="72" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[72]</anchor-end> 詳しくは<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">並列実行</anchor>と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">安定状態</anchor>を参照してください。</comment-p></section><section><h1>イベント・ループとの相互作用が不明なもの</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="46" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[46]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML</anchor> 以前に規定されたものや、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML</anchor> 以後であっても明確な仕様が存在しないものは、
<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="45" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[45]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XSLT</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="44" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;44</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="145" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[145]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Geolocation API</anchor> は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">イベントループ</anchor>が定義される前の仕様書なので関係が説明されていません。おそらく<ul><li><code class="DOMm" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">getCurrentPosition</anchor></code> や <code class="DOMm" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">watchPosition</anchor></code> のアルゴリズムは非同期的に実行されます</li><li><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>?)</li><li><code class="DOMm" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">watchPosition</anchor></code> は非同期的に実行されているアルゴリズムを停止させます</li></ul></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="67" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[67]</anchor-end> <code class="HTMLe" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">video</anchor></code> や <code class="HTMLe" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">audio</anchor></code> の再生の具体的なタイミングは規定されていません。
なお <code class="HTMLe" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">track</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>に合わせて更新しなければならないと規定されています。</p><ed xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="197" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[197]</anchor-end> CODE(XMLe)@en<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[video</anchor>]]/<code xmlns="http://www.w3.org/1999/xhtml" class="XMLe" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">audio</anchor></code></ed><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="196" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[196]</anchor-end> <code class="CSS" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">aural</anchor></code> や <code class="CSS" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">speech</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="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[20]</anchor-end> <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="95" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[95]</anchor-end> いくつかの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">算法</anchor>の一部分は<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">原子的<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">atomic</rt></rubyb>に実行するよう規定されています。</p><ed xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">XXX 一覧</ed></section><section><h1>実装手法</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="79" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[79]</anchor-end> <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:">仕様書</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:">スクリプト</anchor>から観察して<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="84" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[84]</anchor-end> 各<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:">プロセス</anchor>の異なる<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="82" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[82]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webブラウザー</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:">プラットフォーム</anchor>とのやり取りなど、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webページ</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">相互運用性</anchor>には関わらない様々な処理が必要になります。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webブラウザー</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>上の <weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">(= <anchor>著者</anchor>の<anchor>スクリプト</anchor>から見た)</weak>
<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="54" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[54]</anchor-end> <code class="JS" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">window.length</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="128" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[128]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">最上位閲覧文脈</anchor>はそれぞれ<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><rubyb><anchor>セッション履歴イベントループ</anchor><rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">session history event loop</rt></rubyb></f>を持ちます。
<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><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">用語定義上は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">セッション履歴イベントループ</anchor>は<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="14" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[14]</anchor-end> <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="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:">イベント・ループ</anchor>の概念は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web Applications 1.0</anchor> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML Living Standard</anchor>)
によってはじめて体系的に説明、仕様化されました。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="87" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[87]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">イベント・ループ</anchor>は最初に <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web Workers</anchor> において<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ワーカー</anchor>の挙動を説明するために導入されました。</p><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="88" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[88]</anchor-end> <cite xml:lang="en-US-x-hixie">Web Workers</cite> (<time>2013-02-09 03:43:01 +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://web.archive.org/web/20080828221023/http://www.whatwg.org/specs/web-workers/current-work/#queue">http://web.archive.org/web/20080828221023/http://www.whatwg.org/specs/web-workers/current-work/#queue</anchor-external></li></ul></refs><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="89" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[89]</anchor-end> 更にその後、<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><ed xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">...</ed><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="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2]</anchor-end> <cite xml:lang="en">Web Applications 1.0 r6966     Allow browsers to bail early for showModalDialog, alert, confirm, and prompt during pagehide, beforeunload, and unload events.</cite>
( (<time>2012-02-07 07:54:00 +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=6965&amp;to=6966">http://html5.org/tools/web-apps-tracker?from=6965&amp;to=6966</anchor-external></li></ul></refs><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="86" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[86]</anchor-end> <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-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="87" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;87</anchor-internal>、<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="89" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;89</anchor-internal> という経緯からか当初は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">run a worker</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">算法</anchor>に組み込まれており、
<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>閉じ中</anchor><rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">closing</rt></rubyb><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フラグ</anchor>の存在など微妙に定義が違っていました。
しかし <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="85" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;85</anchor-internal> によって両者の定義が統合されました。</p><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="85" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[85]</anchor-end> <cite xml:lang="en">Web Applications 1.0 r7696 Integrate the 'event loop' mechanism of workers and windows together, and try to specify which is meant when it might be ambiguous.</cite> (<time>2013-02-06 09:24:00 +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=7695&amp;to=7696">http://html5.org/tools/web-apps-tracker?from=7695&amp;to=7696</anchor-external></li></ul></refs><section><h1>セッション履歴イベントループ</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="137" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[137]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">セッション履歴イベントループ</anchor>は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">イベントループ</anchor>が複数ある環境での履歴操作を記述するために2013年9月に導入されました。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">セッション履歴イベントループ</anchor>の項を参照。</comment-p></section><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="198" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[198]</anchor-end> <cite xml:lang="en">Web Applications 1.0 r8620     Remove the 'stable state' logic from the 'pause' algorithm. Also, remove some examples that may soon become irrelevant.</cite> (<time>2014-05-09 03:12:00 +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=8619&amp;to=8620">http://html5.org/tools/web-apps-tracker?from=8619&amp;to=8620</anchor-external></li></ul></refs></section><section><h1></h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="106" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[106]</anchor-end> <cite xml:lang="en">Web Applications 1.0 r7980 Lay the groundwork for DOM Core to handle reentrant mutation observers.</cite>
( (<time>2013-06-15 07:32:00 +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=7979&amp;to=7980">http://html5.org/tools/web-apps-tracker?from=7979&amp;to=7980</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="109" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[109]</anchor-end> <cite>IRC logs: freenode / #whatwg / 20130701</cite>
( (<time>2013-07-02 23:22:48 +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/20130701#l-216">http://krijnhoetmer.nl/irc-logs/whatwg/20130701#l-216</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="110" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[110]</anchor-end> <cite xml:lang="en">Bug 22522 – WebIDL, error handling, and promises</cite>
( (<time>2013-07-02 23:40:42 +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://www.w3.org/Bugs/Public/show_bug.cgi?id=22522">https://www.w3.org/Bugs/Public/show_bug.cgi?id=22522</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="111" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[111]</anchor-end> <cite>IRC logs: freenode / #whatwg / 20130701</cite>
( (<time>2013-07-02 23:22:48 +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/20130701#l-619">http://krijnhoetmer.nl/irc-logs/whatwg/20130701#l-619</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="126" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[126]</anchor-end> <cite>IRC logs: freenode / #whatwg / 20130924</cite>
( (<time>2013-09-25 20:14: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="http://krijnhoetmer.nl/irc-logs/whatwg/20130924">http://krijnhoetmer.nl/irc-logs/whatwg/20130924</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="143" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[143]</anchor-end> <cite>IRC logs: freenode / #whatwg / 20131026</cite>
( (<time>2013-10-28 00:38: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="http://krijnhoetmer.nl/irc-logs/whatwg/20131026">http://krijnhoetmer.nl/irc-logs/whatwg/20131026</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="144" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[144]</anchor-end> <cite>IRC logs: freenode / #whatwg / 20131030</cite>
( (<time>2013-11-01 21:16:51 +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/20131030#l-662">http://krijnhoetmer.nl/irc-logs/whatwg/20131030#l-662</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="156" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[156]</anchor-end> <cite>IRC logs: freenode / #whatwg / 20140204</cite>
( (<time>2014-02-05 20:30:59 +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/20140204">http://krijnhoetmer.nl/irc-logs/whatwg/20140204</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="157" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[157]</anchor-end> <cite>Add a warning sign for synchronous usage of the XMLHttpRequest API · 575999a · whatwg/xhr</cite>
( (<time>2014-02-13 06:44:19 +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/xhr/commit/575999ae46afadc8f2ac6376c68fa7a887a88aa6">https://github.com/whatwg/xhr/commit/575999ae46afadc8f2ac6376c68fa7a887a88aa6</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="160" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[160]</anchor-end> <cite xml:lang="en">Web Applications 1.0 r8510     Lay the groundwork for interruptible microtasks, mutation-observer style.</cite> (<time>2014-02-25 12:53:00 +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=8509&amp;to=8510">http://html5.org/tools/web-apps-tracker?from=8509&amp;to=8510</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="175" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[175]</anchor-end> <cite xml:lang="en">Web Applications 1.0 r8553     Make microtasks work in workers too, since eventually we'll want the JavaScript stuff to hook into this</cite> (<time>2014-03-19 03:12:00 +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=8552&amp;to=8553">http://html5.org/tools/web-apps-tracker?from=8552&amp;to=8553</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="176" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[176]</anchor-end> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="175" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;175</anchor-internal> で<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><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="206" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[206]</anchor-end> <cite xml:lang="en">Web Applications 1.0 r8630     Refactor 'stable states' to be defined in terms of microtasks</cite> (<time>2014-05-14 04:18:00 +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=8629&amp;to=8630">http://html5.org/tools/web-apps-tracker?from=8629&amp;to=8630</anchor-external></li></ul><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="215" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[215]</anchor-end> <cite xml:lang="en">Web Applications 1.0 r8832 Hyperlink to 'step 1' of the event loop</cite>
( (<time>2014-10-10 06:39:00 +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://html5.org/r/8832">https://html5.org/r/8832</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="216" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[216]</anchor-end> <cite>IRC logs: freenode / #whatwg / 20141119</cite>
( (<time>2014-11-21 01:14:19 +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/20141119#l-819">http://krijnhoetmer.nl/irc-logs/whatwg/20141119#l-819</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="52" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[52]</anchor-end> 2014年11月には、<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><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">レンダリングの更新</anchor>を参照。</comment-p><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="73" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[73]</anchor-end> <cite xml:lang="en">Web Applications 1.0 r8849  Flesh out how rendering happens in the event loop. This also defines requestAnimationFrame() and obsoletes the 'Timing control for script-based animations' spec (by request of that spec's editors)</cite> (<time>2014-11-20 06:56:00 +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://html5.org/r/8849">https://html5.org/r/8849</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="64" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[64]</anchor-end> <cite xml:lang="en">Web Applications 1.0 r8850 Teach the event loop that it might not have a task to run</cite> (<time>2014-11-20 07:20:00 +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://html5.org/r/8850">https://html5.org/r/8850</anchor-external></li></ul></refs><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> <cite xml:lang="en">Timing and Synchronization in JavaScript - Opera Developer Community</cite> (<time>2009-06-07 11:12:38 +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://dev.opera.com/articles/view/timing-and-synchronization-in-javascript/">http://dev.opera.com/articles/view/timing-and-synchronization-in-javascript/</anchor-external></p><ed xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="83" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[83]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IndexedDB</anchor></ed><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="77" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[77]</anchor-end> <cite xml:lang="en">Web Applications 1.0 r2074 Define event loops, task queues, etc; Make 'fetching' use this mechanism (everything will in due course); Fix some cross-references around 'interactive content'.</cite>
(<time>2008-08-16 09:52:00 +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://html5.org/r/2074">https://html5.org/r/2074</anchor-external></p><figure class="quote"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="112" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[112]</anchor-end> <cite>IRC logs: freenode / #whatwg / 20150612</cite>
(<time>2015-06-13 12:21:57 +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/20150612">http://krijnhoetmer.nl/irc-logs/whatwg/20150612</anchor-external></figcaption><blockquote><p># <strong>[</strong>17:24<strong>]</strong> &lt;annevk&gt; ek_: it doesn't necessarily have to be a distinct thread, but you have to be pretty clever to pull that of (Opera used to do that)</p></blockquote></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="113" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[113]</anchor-end> <cite>BlinkOn Scheduler Talk - Google スライド</cite>
(<time>2015-06-25 18:40:21 +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://docs.google.com/presentation/d/1vqqBwDbnwrCz0P5JX_fxVQd0Q5KmVZdB_hk6RLNgO2Q/edit">https://docs.google.com/presentation/d/1vqqBwDbnwrCz0P5JX_fxVQd0Q5KmVZdB_hk6RLNgO2Q/edit</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="219" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[219]</anchor-end> <cite>Surfin' Safari - Blog Archive » Introducing the Rendering Frames Timeline</cite>
(<time>2015-09-09 11:13:22 +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://www.webkit.org/blog/3996/introducing-the-rendering-frames-timeline/">https://www.webkit.org/blog/3996/introducing-the-rendering-frames-timeline/</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="224" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[224]</anchor-end> <cite>IRC logs: freenode / #whatwg / 20151118</cite>
(<time>2015-11-19 16:10:44 +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/20151118">http://krijnhoetmer.nl/irc-logs/whatwg/20151118</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="226" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[226]</anchor-end> <cite xml:lang="en">Remove the storage mutex due to lack of implementation · whatwg/html@1b918cf</cite> (<time>2015-12-16 14:38: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/1b918cf72fcbba011f83b92ab5d1f483fb1cafa3">https://github.com/whatwg/html/commit/1b918cf72fcbba011f83b92ab5d1f483fb1cafa3</anchor-external></p></section><section><h1><code class="DOMm" xml:lang="en">showModalDialog</code> の廃止</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="227" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[227]</anchor-end> <cite xml:lang="en">Remove showModalDialog() · whatwg/html@eec9646</cite>
(<time>2015-12-16 14:57:48 +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/eec96462b5bd1c7f904a4880bc04dade6efcd597">https://github.com/whatwg/html/commit/eec96462b5bd1c7f904a4880bc04dade6efcd597</anchor-external></p><section><h1>利用者インターフェイスの無効化</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="114" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[114]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">イベントループ</anchor>とは直接関係ありませんが、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者インターフェイス</anchor>が<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">無効化<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">disabled</rt></rubyb>されることがあります。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="115" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[115]</anchor-end> <code class="DOMm" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">showModalDialog</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:">背景閲覧文脈</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:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></anchor>
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><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://www.whatwg.org/specs/web-apps/current-work/#dom-showmodaldialog">http://www.whatwg.org/specs/web-apps/current-work/#dom-showmodaldialog</anchor-external></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="116" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[116]</anchor-end> これはすなわち <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><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://www.whatwg.org/specs/web-apps/current-work/#dom-showmodaldialog">http://www.whatwg.org/specs/web-apps/current-work/#dom-showmodaldialog</anchor-external></src>、<figure class="list"><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="117" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[117]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者</anchor>が <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">navigate</anchor> できなくする<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">べきです</strong></anchor></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="118" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[118]</anchor-end> <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></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="119" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[119]</anchor-end> <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></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="120" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[120]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者</anchor>以外からの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">イベント</anchor>の発生は止めません</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="121" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[121]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">スクリプト</anchor>の実行は中断しません</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="122" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[122]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">アニメーション</anchor>の実行は止めません</li></ul></figure></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="123" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[123]</anchor-end> ということで、<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:">イベント</anchor>を無視することが違っています。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="146" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[146]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">inert</anchor> も類似した状況を作り出します。 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">inert</anchor> は <del><code class="HTMLa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">inert</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">属性</anchor>や</del>
<code class="HTMLe" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">dialog</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要素</anchor>によって発生します。</p></section></section><section><h1></h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="228" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[228]</anchor-end> <cite xml:lang="en">Integrate with the ES job queue · whatwg/html@12db63c</cite> (<time>2015-12-22 14:38:12 +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/12db63c7c038b9d8f1d3501d6661d89d495abeac">https://github.com/whatwg/html/commit/12db63c7c038b9d8f1d3501d6661d89d495abeac</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="229" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[229]</anchor-end> <cite xml:lang="en">Rewrite script execution on top of ES · whatwg/html@4891d18</cite>
(<time>2015-12-22 23:58:44 +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/4891d18aaf2df1d40aa61f467a5a10cfc19dd85d">https://github.com/whatwg/html/commit/4891d18aaf2df1d40aa61f467a5a10cfc19dd85d</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="241" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[241]</anchor-end> <cite xml:lang="en">Editorial: make wait a concept for bodies instead of responses · whatwg/fetch@1873eda</cite>
(<time>2016-03-26 11:52:33 +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/fetch/commit/1873edac285df87c495b1966d8fdb2fd7ba733b2">https://github.com/whatwg/fetch/commit/1873edac285df87c495b1966d8fdb2fd7ba733b2</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="242" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[242]</anchor-end> <cite xml:lang="en">Allow for a request to finish after a response starts to arrive · whatwg/fetch@3a41b6f</cite>
(<time>2016-03-26 11:54: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/fetch/commit/3a41b6f04996d4aac13ecad5b38635827dcd0df3">https://github.com/whatwg/fetch/commit/3a41b6f04996d4aac13ecad5b38635827dcd0df3</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="236" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[236]</anchor-end> <cite xml:lang="en">Add a warning about the &quot;pause&quot; operation</cite>
( (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">domenic</anchor>著, <time>2016-05-23 15:32: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="https://github.com/whatwg/html/commit/8d564d1b5589906f77589b499e1ebf44671d2ee6">https://github.com/whatwg/html/commit/8d564d1b5589906f77589b499e1ebf44671d2ee6</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="78" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[78]</anchor-end> <cite xml:lang="en">Remove global script clean-up jobs</cite>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">mkruisselbrink</anchor>著, <time>2017-02-03 03:53:33 +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/305aa6705e2ae65ae8a407c53316359dfe286eba">https://github.com/whatwg/html/commit/305aa6705e2ae65ae8a407c53316359dfe286eba</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="94" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[94]</anchor-end> <cite xml:lang="en"><strong>[</strong>worklets<strong>]</strong> Clarify that the event loop is not run continuously.</cite>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">bfgeek</anchor>著, <time>2017-04-05 06:22:35 +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/w3c/css-houdini-drafts/commit/4b7d4dfaac7acd3ca6c5c5131a2a65874265327d">https://github.com/w3c/css-houdini-drafts/commit/4b7d4dfaac7acd3ca6c5c5131a2a65874265327d</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="96" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[96]</anchor-end> <cite xml:lang="en">Do we need to mandate agents and event loops being 1:1? · Issue #2526 · whatwg/html</cite>
(<time>2017-04-22 15:24:27 +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/2526">https://github.com/whatwg/html/issues/2526</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="97" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[97]</anchor-end> <cite xml:lang="en">Editorial: minor event loop processing model cleanup</cite>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">annevk</anchor>著, <time>2017-05-07 01:11:59 +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/7ddfd096ba815d4bd4e8b3ff7900bef1e95b985c">https://github.com/whatwg/html/commit/7ddfd096ba815d4bd4e8b3ff7900bef1e95b985c</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="98" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[98]</anchor-end> <cite xml:lang="en">atotic/event-loop: event loop docs</cite>
(<time>2017-05-18 23:34:02 +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/atotic/event-loop">https://github.com/atotic/event-loop</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="99" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[99]</anchor-end> <cite xml:lang="en">Meta: export some event loop-related definitions</cite>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">domenic</anchor>著, <time>2017-07-14 04:59: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://github.com/whatwg/html/commit/b0da8d31269485c5ff794912dff354c5d966900b">https://github.com/whatwg/html/commit/b0da8d31269485c5ff794912dff354c5d966900b</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="100" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[100]</anchor-end> <cite xml:lang="en">Meta: export some event loop-related definitions by domenic · Pull Request #2836 · whatwg/html</cite>
(<time>2017-07-15 14:18:07 +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/pull/2836">https://github.com/whatwg/html/pull/2836</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="101" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[101]</anchor-end> <cite xml:lang="en">Cross-link to update the rendering · Issue #10 · WICG/paint-timing</cite>
(<time>2017-07-15 14:19:13 +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/WICG/paint-timing/issues/10">https://github.com/WICG/paint-timing/issues/10</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="103" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[103]</anchor-end> <cite xml:lang="en">Clarify that specification text usually starts on the event loop</cite>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">domenic</anchor>著, <time>2017-07-01 06:00: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/bae35b1a90f723efb1c913438d9e1441fa67461a">https://github.com/whatwg/html/commit/bae35b1a90f723efb1c913438d9e1441fa67461a</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="104" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[104]</anchor-end> <cite xml:lang="en">&quot;Do any synchronous setup work, while still on the event loop...&quot; · Issue #2800 · whatwg/html</cite>
(<time>2017-10-17 17:24:45 +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/2800">https://github.com/whatwg/html/issues/2800</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="105" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[105]</anchor-end> <cite xml:lang="en">Clarify that specification text usually starts on the event loop by domenic · Pull Request #2803 · whatwg/html</cite>
(<time>2017-10-17 17:25:02 +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/pull/2803">https://github.com/whatwg/html/pull/2803</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="107" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[107]</anchor-end> <cite xml:lang="en">Allow UAs to conditionally block on stylesheet loading</cite>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">domfarolino</anchor>著, <time>2018-01-12 17:19:01 +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/42dd707cbfc0f5d8f88b04ef270f4fcb121a10ff">https://github.com/whatwg/html/commit/42dd707cbfc0f5d8f88b04ef270f4fcb121a10ff</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="132" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[132]</anchor-end> <cite xml:lang="en">Integrate with requestIdleCallback</cite>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">rmcilroy</anchor>著, <time>2018-10-25 23:57:45 +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/01787ee712a7803e64e0da6ac9644a5e6b8d2cca">https://github.com/whatwg/html/commit/01787ee712a7803e64e0da6ac9644a5e6b8d2cca</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="154" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[154]</anchor-end> <cite xml:lang="en">Missing definition for &quot;idle time&quot; · Issue #70 · w3c/requestidlecallback</cite>
(<time>2018-11-06 23:02:44 +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/w3c/requestidlecallback/issues/70">https://github.com/w3c/requestidlecallback/issues/70</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="155" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[155]</anchor-end> <cite xml:lang="en">Hook into HTML spec. by rmcilroy · Pull Request #75 · w3c/requestidlecallback</cite>
(<time>2018-11-06 23:06:03 +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/w3c/requestidlecallback/pull/75">https://github.com/w3c/requestidlecallback/pull/75</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="174" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[174]</anchor-end> <cite xml:lang="en">Integrate with requestIdleCallback by domenic · Pull Request #3570 · whatwg/html</cite>
(<time>2018-11-06 23:06:29 +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/pull/3570">https://github.com/whatwg/html/pull/3570</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="177" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[177]</anchor-end> <cite xml:lang="en">Integrate with requestIdleCallback by rmcilroy · Pull Request #4104 · whatwg/html</cite>
(<time>2018-11-06 23:09:12 +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/pull/4104">https://github.com/whatwg/html/pull/4104</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="178" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[178]</anchor-end> <cite xml:lang="en">Fix argument ordering in call to report long tasks</cite>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">npm1</anchor>著, <time>2018-11-14 09:17:52 +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/9faa107bf28a2a4100203973e41741be1e8e9b77">https://github.com/whatwg/html/commit/9faa107bf28a2a4100203973e41741be1e8e9b77</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="185" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[185]</anchor-end> <cite xml:lang="en">Arguments ordering in Report long tasks for “user agent does not execute this loop” · Issue #4114 · whatwg/html</cite>
(<time>2019-03-10 18:54:42 +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/4114">https://github.com/whatwg/html/issues/4114</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="189" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[189]</anchor-end> <cite xml:lang="en">Fix ordering in call to Report long tasks by npm1 · Pull Request #4174 · whatwg/html</cite>
(<time>2019-03-10 18:55:11 +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/pull/4174">https://github.com/whatwg/html/pull/4174</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="190" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[190]</anchor-end> <cite xml:lang="en">Start an idle period more often</cite>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">rmcilroy</anchor>著, <time>2018-12-22 04:06:18 +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/4fd4d3df700ecf9d00962fbda760a06014175728">https://github.com/whatwg/html/commit/4fd4d3df700ecf9d00962fbda760a06014175728</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="191" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[191]</anchor-end> <cite xml:lang="en">&quot;start an idle period algorithm&quot; not run enough · Issue #4212 · whatwg/html</cite>
(<time>2019-06-05 20:09:51 +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/4212">https://github.com/whatwg/html/issues/4212</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="192" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[192]</anchor-end> <cite xml:lang="en">Start an idle period if event loop has tasks for non-fully active docs by rmcilroy · Pull Request #4250 · whatwg/html</cite>
(<time>2019-06-05 20:10:00 +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/pull/4250">https://github.com/whatwg/html/pull/4250</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="193" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[193]</anchor-end> <cite xml:lang="en">Remove parameter from &quot;Report long tasks&quot; call</cite>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">npm1</anchor>著, <time>2018-11-21 08:13:09 +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/e48c42f60788f318f1d848c33869bb2461673c00">https://github.com/whatwg/html/commit/e48c42f60788f318f1d848c33869bb2461673c00</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="194" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[194]</anchor-end> <cite xml:lang="en">Make fragment loop not depend on spin the event loop</cite>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">annevk</anchor>著, <time>2019-06-28 16:59:42 +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/e62a7be6f3161993b82e9d8469ba2e64a3c6a2a6">https://github.com/whatwg/html/commit/e62a7be6f3161993b82e9d8469ba2e64a3c6a2a6</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="214" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[214]</anchor-end> <cite xml:lang="en">Integrate with the Long Tasks spec</cite>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">npm1</anchor>, <time>2018-10-23 07:23:27 +09:00</time>, <time>2021-03-25T06:05:19.000Z</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/425a67ba81288305fce86736a0772f84c3f30eed">https://github.com/whatwg/html/commit/425a67ba81288305fce86736a0772f84c3f30eed</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="263" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[263]</anchor-end> <cite xml:lang="en">Add modifications to HTML from LongTasks Spec by npm1 · Pull Request #4059 · whatwg/html</cite>
(<time>2021-03-25T07:10:15.000Z</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/pull/4059">https://github.com/whatwg/html/pull/4059</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="264" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[264]</anchor-end> <cite xml:lang="en">Remove parameter from &quot;Report long tasks&quot; call</cite>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">npm1</anchor>, <time>2018-11-21 08:13:09 +09:00</time>, <time>2021-03-25T07:23:28.000Z</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/e48c42f60788f318f1d848c33869bb2461673c00">https://github.com/whatwg/html/commit/e48c42f60788f318f1d848c33869bb2461673c00</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="265" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[265]</anchor-end> <cite xml:lang="en">Remove &quot;browser&quot; and &quot;rendering&quot; task types by npm1 · Pull Request #50 · w3c/longtasks</cite>
(<time>2021-03-25T07:25:23.000Z</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/w3c/longtasks/pull/50">https://github.com/w3c/longtasks/pull/50</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="266" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[266]</anchor-end> <cite xml:lang="en">Remove param from Report long tasks by npm1 · Pull Request #4186 · whatwg/html</cite>
(<time>2021-03-25T07:26:12.000Z</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/pull/4186">https://github.com/whatwg/html/pull/4186</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="267" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[267]</anchor-end> <cite xml:lang="en">Editorial: refactor spin the event loop by annevk · Pull Request #4463 · whatwg/html</cite>
(<time>2021-03-25T07:42:06.000Z</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/pull/4463">https://github.com/whatwg/html/pull/4463</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="268" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[268]</anchor-end> <cite xml:lang="en">Editorial: refactor and explain spin the event loop</cite>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">annevk</anchor>, <time>2019-05-08 00:53:15 +09:00</time>, <time>2021-03-25T07:42:20.000Z</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/38c50c4ea111bd8f3ff60d2a49110a62a293c7ac">https://github.com/whatwg/html/commit/38c50c4ea111bd8f3ff60d2a49110a62a293c7ac</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="271" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[271]</anchor-end> <cite xml:lang="en">Editorial: rigorize tasks and task queuing</cite>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">domenic</anchor>, <time>2019-05-01 01:36:30 +09:00</time>, <time>2021-03-25T08:52:45.000Z</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/f4e29076caad1779336adea40ac2125d6d1c9496">https://github.com/whatwg/html/commit/f4e29076caad1779336adea40ac2125d6d1c9496</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="273" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[273]</anchor-end> <cite xml:lang="en">Script event-loop: ignoring tasks for documents that are not fully active · Issue #4242 · whatwg/html</cite>
(<time>2021-03-25T11:52:35.000Z</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/4242">https://github.com/whatwg/html/issues/4242</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="274" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[274]</anchor-end> <cite xml:lang="en">Editorial: rigorize tasks and task queuing by domenic · Pull Request #4465 · whatwg/html</cite>
(<time>2021-03-25T11:54:02.000Z</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/pull/4465">https://github.com/whatwg/html/pull/4465</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="275" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[275]</anchor-end> <cite xml:lang="en">Remove compound microtasks</cite>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">annevk</anchor>, <time>2019-03-30 00:53:50 +09:00</time>, <time>2021-03-26T11:42:46.000Z</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/77240a20c840ac60f0b1102ec4ac8be7df717172">https://github.com/whatwg/html/commit/77240a20c840ac60f0b1102ec4ac8be7df717172</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="276" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[276]</anchor-end> <cite xml:lang="en">Remove compound microtasks by annevk · Pull Request #4437 · whatwg/html</cite>
(<time>2021-03-26T11:43:16.000Z</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/pull/4437">https://github.com/whatwg/html/pull/4437</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="277" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[277]</anchor-end> <cite xml:lang="en">Editorial: remove now-redundant removal of event loop task</cite>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">domenic</anchor>, <time>2019-09-13 14:26:06 +09:00</time>, <time>2021-04-12T05:24:12.000Z</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/edcf2eff7570fd142188e45350eb9c69bad9b9fc">https://github.com/whatwg/html/commit/edcf2eff7570fd142188e45350eb9c69bad9b9fc</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="278" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[278]</anchor-end> <cite xml:lang="en">Editorial: remove now-redundant removal of event loop task by domenic · Pull Request #4897 · whatwg/html</cite>
(<time>2021-04-12T05:26:19.000Z</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/pull/4897">https://github.com/whatwg/html/pull/4897</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="279" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[279]</anchor-end> <cite xml:lang="en">Duplicated removal from queue in the Event Processing Model · Issue #4888 · whatwg/html</cite>
(<time>2021-04-12T05:26:51.000Z</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/4888">https://github.com/whatwg/html/issues/4888</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="280" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[280]</anchor-end> <cite xml:lang="en">Do not report long tasks outside of the event loop</cite>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">npm1</anchor>, <time>2019-12-05 03:48:39 +09:00</time>, <time>2022-01-18T11:58:57.000Z</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/d5a8e4d14d5ab07d3472f7d06077333cefa508b0">https://github.com/whatwg/html/commit/d5a8e4d14d5ab07d3472f7d06077333cefa508b0</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="281" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[281]</anchor-end> <cite xml:lang="en">Reporting work outside of event loop can cause leaks · Issue #77 · w3c/longtasks</cite>
(<time>2022-01-18T12:03:56.000Z</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/w3c/longtasks/issues/77">https://github.com/w3c/longtasks/issues/77</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="282" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[282]</anchor-end> <cite xml:lang="en">Do not report work outside of event loop by npm1 · Pull Request #5123 · whatwg/html</cite>
(<time>2022-01-18T12:06:14.000Z</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/pull/5123">https://github.com/whatwg/html/pull/5123</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="285" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[285]</anchor-end> <cite xml:lang="en">Editorial: inline event loop start and remove event loop end</cite>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">npm1</anchor>, <time>2019-12-06 02:32:44 +09:00</time>, <time>2022-01-26T11:59:29.000Z</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/1ca48214c66aa20fc586773ea9c572e0ef8cab11">https://github.com/whatwg/html/commit/1ca48214c66aa20fc586773ea9c572e0ef8cab11</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="262" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[262]</anchor-end> <cite xml:lang="en">Do not report work outside of event loop by npm1 · Pull Request #5123 · whatwg/html</cite>
(<time>2022-01-26T12:08:46.000Z</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/pull/5123">https://github.com/whatwg/html/pull/5123</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="287" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[287]</anchor-end> <cite xml:lang="en">Remove event loop end by npm1 · Pull Request #5130 · whatwg/html</cite>
(<time>2022-01-26T12:09:32.000Z</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/pull/5130">https://github.com/whatwg/html/pull/5130</anchor-external></p></section></section></body></html>