* 仕様書
[REFS[
- [7] [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2012-03-28 21:58:58 +09:00]] 版)
]REFS]
* 処理モデル
** マイクロタスク・チェックポイント
[6] [[イベント・ループ]]の処理の中などで[RUBYB[[[マイクロタスク・チェックポイント]]]@en[microtask checkpoint]]の[[算法]]が呼ばれます。
[12] [[利用者エージェント]]は次のように[DFN[[RUBYB[[[マイクロタスク・チェックポイントを行う]]]@en[perform a microtask checkpoint]]]][['''必要''']]があります
[SRC[>>7]]。
[FIG[
= [8] [[変異観察器が走っているフラグ]]が[[偽]]なら、
== [9] [[変異観察器が走っているフラグ]]を[[真]]にします。
== [22] [RUBYB[[[未完の整列について表を整列]]]@en[sort the tables with pending sorts]]します。
== [10] [[スクリプトの閲覧文脈]]が所属している[[関連する類似起源閲覧文脈の単位]]の[[[CODE(DOMi)@en[MutationObserver]]オブジェクトを呼び出し]]します。
==- [11] これによって[[コールバック]]の[[スクリプト]]が[[発火]]されたりするわけですが、
その際 [[jump to a code entry-point]] [[算法]]が呼ばれ、その中で再度この[[算法]]が呼ばれることになるので、
[[変異観察器が走っているフラグ]]でチェックして再実行しないようにしています。
== [13] [[変異観察器が走っているフラグ]]を[[偽]]にします。
]FIG]
[15] [[マイクロタスク・チェックポイントを行う]]のは次の場面です。
[FIG[
= [16] [[イベント・ループ]]の1ステップとして
= [17] [[jump to a code entry-point]] ([[スクリプト]]実行) の1ステップとして
= [18] [[HTML]] [CODE(HTMLe)@en[[[script]]]] [[要素]]の[[終了タグ]]の処理の1ステップとして
;; [19] [[SVG]] [CODE(XMLe)@en[[[script]]]] [[要素]]でも同様に呼び出されるものと推察されますが、
現時点で [[SVG]] [CODE(XMLe)@en[[[script]]]] [[要素]]の処理モデルを詳細に規定した仕様がありません。
]FIG]
* 歴史
[REFS[
- [33] [CITE@en[DOM Mutation Events Replacement: When to deliver mutations]] ([[Rafael Weinstein]] 著, [TIME[2011-08-11 09:44:32 +09:00]] 版)
- [1] [CITE[IRC logs: freenode / #whatwg / 20120228]]
( ([TIME[2012-03-08 00:01:17 +09:00]] 版))
- [2] [CITE@en[Re: ''''''[''''''dom'''''']'''''' mutation observers and HTML]]
( ([[Olli Pettay]] 著, [TIME[2012-02-18 00:51:23 +09:00]] 版))
- [3] [CITE[IRC logs: freenode / #whatwg / 20120320]]
( ([TIME[2012-03-29 23:32:57 +09:00]] 版))
- [14] [CITE[Bug 17988 – The term microtask should be defined]]
( ([TIME[2012-07-21 17:51:05 +09:00]] 版))
- [21] [CITE@en[Web Applications 1.0 r7597 New feature: sorting tables. The actual sort algorithm isn't done yet, but this should be a good start for first draft reviewers.]] ([TIME[2012-12-27 08:58:00 +09:00]] 版)
]REFS]
[23] [CITE@en[Bug 19554 – Needed: An Algorithmic "Hook" For Culling URL.objectURLs with autoRevoke=true]]
( ([TIME[2013-05-30 08:45:57 +09:00]] 版))
[24] [CITE[IRC logs: freenode / #whatwg / 20130528]]
( ([TIME[2013-05-29 23:52:26 +09:00]] 版))
[25] [CITE@en[Bug 22185 – Microtask checkpoint wording is wrong -- and needs abstracting]]
( ([TIME[2013-06-09 01:40:24 +09:00]] 版))
[26] [CITE@en[Web Applications 1.0 r7950 Bring the 'microtask checkpoint' invocation at the end of scripts more into line with implementations, and unrelated editorial fixes.]]
( ([TIME[2013-06-11 05:52:00 +09:00]] 版))
[27] [CITE@en[Bug 22296 – Microtask and promises]]
( ([TIME[2013-09-13 07:31:35 +09:00]] 版))
[29] [CITE[IRC logs: freenode / #whatwg / 20131107]]
( ([TIME[2013-11-09 12:27:06 +09:00]] 版))