DOM Event Model

イベント (DOM)

[24] DOM イベント (Events) は、 HTML文書XMLHttpRequest をはじめとする Webプラットフォームオブジェクトにおける事象モデルです。

仕様書

概念

[56]

同期イベント

[60] 新たに DOM に追加されるほとんどのイベントは、 スクリプトとは別のタスクによって dispatch される (つまりスクリプトから見て非同期dispatch される) 形になっています。

[61] 一方で古くからあるイベントは、同期的dispatch されることがあります。

[62] 同期的dispatch されるイベント
不完全

歴史

[41] DOMイベントNetscape Navigator 2.0 の最初の JavaScript の頃から存在し、 すべての利用者エージェントに実装されました (on* 属性)。 IE4Netscape4 によって大幅に拡張・一般化されましたが、両者の実装は完全に異なっていました。更に W3C はそれらを元にどちらとも異なる仕様をDOM2イベントとして標準化しました。 Netscape4 はすぐに衰退しましたが、しばらくは W3CIE の2つのイベント・モデルが存在し混乱のもととなっていました。

[42] その後 W3CDOM2イベントを拡張した DOM3イベントの標準化を進めましたが十分な支持を得られず、一旦は中止されることになります。 実用性に乏しい新機能を排除して現実的な仕様として再開されましたが作業は遅々として進まず、 DOM4、後の WHATWG DOM Standard によって改めて Webブラウザーの挙動に基づき仕様が全面改訂されるに至り、 on* 属性を規定する HTML Standard と合わせ、 はじめてDOMイベントの仕様が実装可能なレベルで詳細に文書化されることと相成りました。

DOM 事象モデルに関わる仕様

[11] HTML 4 IW:HTML4:""

HTML 4 は、内在事象属性として、 DOM 0 の事象モデルの中心的な部分を取り入れています。 ただし、詳細な事象モデルの規定はなく、 個々の事象がいつ発生するのか簡単に述べられているだけです。

[1] DOM2 イベント (Events) は、 W3C で最初に標準化された DOM イベント仕様です。 2000年11月に W3C 勧告になりました。 DOM 0 とは異なり、事象の処理が (比較的) 正確に規定されていますが、 DOM 0 とは (矛盾はしないものの) 異なる仕様となっており、 結局 DOM 0 の事象関係は曖昧なままとなってしまいました。

[2] DOM 水準 3・事象 IW:DOM3:"Events/"

DOM 水準 2 事象の次の水準です。十分な反応が得られなかったために Last Call WD の後に2003年11月に WG Note になりました。この仕様自体は勧告に至らなかったとはいえ、 DOM 水準3・中核の勧告や SVG 1.2 などから参照されています。 技術的には、 DOM 水準 2 に比べると、事象名が単なる名前から名前空間URI局所名の組に改められたり、 DOM 水準 2 で勧告前に省かれた文字(列)入力に関する事象が加えられたりしています。 仕様書の説明もより整理されたものとなっています。

[8] XML 事象 http://www.w3.org/TR/xml-events

XML事象は、事象聴取器を XML 文書中に記述する構文の規定です。 2003年10月に W3C 勧告になっています。 DOM 水準2・事象に基づいて規定されていますが、 DOM 水準3・事象勧告や SVG 1.2 によれば DOM 水準3と使って良いようです。 機能的・意味的には DOM 水準 0 の各種の事象記述の構文の後継になっていますが、 互換性はまったくありません (お互いに矛盾はしません)。

[10] SVG IW:SVG1:"", http://www.w3.org/TR/SVG12/

SVG は、 HTML 4 のように内在事象属性を規定しています。 HTML とは異なり、 DOM との関係などについても明確に規定があります。 SVG 1.0 と SVG 1.1 は DOM 水準2・事象と SMIL アニメーションに基づいています。 SVG 1.2 は DOM 水準3・事象, XML 事象, SMIL アニメーション, sXBL に基づいています。

[12] XBL - XML Binding Language http://www.w3.org/TR/xbl/, SVG's XML Binding Language (sXBL) http://www.w3.org/TR/sXBL/

XBL, sXBL影内容と事象の関係について規定しています。

[14] Web Applications 1.0 http://whatwg.org/specs/web-apps/current-work/#server-sent はネットワークを通じて DOM 事象を転送する方法を提案しています。 (名無しさん)

[17] Remote Events for XML (REX) 1.0 http://www.w3.org/TR/rex/

>>14 と同じような目的のものだけど、例によって >>14 は単純で大体うまくいくもの、こちらは完璧に何でもできることを目指したものみたいです。

現時点の仕様案では >>14変異事象を必ずしもうまく扱えませんが、 >>14変異事象しか規定されていません。 (名無しさん 2006-02-09 02:43:39 +00:00)

[63] CEA-2014-B

DOM2 Events

[64] KS X 6047-3:2011DOM2 EventsKS 版。

具体的な事象に関わる仕様

[3] DOM 水準3・中核 IW:DOM3:"Core/"

DOM 木の操作による変異事象に関する規定が含まれています。 また、 DOM 事象モデルとは異なる、 DOMErrorDOMUserDataHandler のような似たような処理の仕組みが規定されています。

[4] DOM 水準3・読込みおよび保存 IW:DOM3:"LS/"

読込みや保存に関する事象についての規定が含まれています。

[7] XForms 1.0 IW:XForms10:""

XForms 1.0 は、 DOM 水準2・事象を基にした処理モデルを規定しています。

[9] SMIL Animation http://www.w3.org/TR/smil-animation

SMIL AnimationDOM 水準2・事象に基づいて構築されています。 (SVG 1.2 によれば水準3として使うことはできないようです。)

[13] XUL http://www.xulplanet.com/references/elemref/ref_EventHandlers.html

XUL は内在事象属性や DOM 事象を定義しています。

[15] [DASE] DTV A S E L 1 (DASE-1) P 2: D A E ATSC Standard http://www.atsc.org/standards/a_100_2.pdfDOM水準2・事象を基にして、 鍵盤関連の事象などを定義しています。

(名無しさん [sage])

[16] EMMA: Extensible MultiModal Annotation markup language (Last Call) http://www.w3.org/TR/2005/WD-emma-20050916/#appD

界面 EMMAEvent を定義しています。

(名無しさん)

[18] Media Access Events http://www.w3.org/TR/2006/WD-MediaAccessEvents-20061013/ (名無しさん 2006-10-13 23:23:33 +00:00)

[21] List of events - ESW Wiki ( 版) http://esw.w3.org/topic/List_of_events (名無しさん 2007-04-28 04:23:16 +00:00)

その他

[5] VoiceXML 2.0 http://www.w3.org/TR/voicexml20/

DOM 水準3・事象は使用例として VoiceXML 2.0 を挙げています。 しかし、実際には VoiceXML 2.0 勧告が規定しているものは (DOM 水準3・事象モデルとは矛盾していないものの) 異なる事象モデルです。

[6] RDF/XML Syntax Specification http://www.w3.org/TR/rdf-syntax-grammar/

RDF/XML は規定の方法として (あるいは RDF/XML 文書から RDF グラフを構築する手段として) 事象モデルを定義しています。この事象モデルは DOM のものではなく、 SAX のものを基にしています。

関連

[49] DOMイベントと似ているものの DOMイベントを使わない、使わないようになったようなものとして、 次のものがあります。

[50] イベント・ループとは直接関係ありません。

メモ

[19] 作って納得! DOM 2 Events: Days on the Moon (2007-03-25 14:31:59 +09:00 版) http://nanto.asablo.jp/blog/2007/03/23/1339498 (名無しさん 2007-03-25 05:38:02 +00:00)

[20] DOM Events とブラウザの実装: Days on the Moon (2007-03-25 14:37:03 +09:00 版) http://nanto.asablo.jp/blog/2007/03/23/1339502 (名無しさん 2007-03-25 05:42:38 +00:00)

[22] Touch and gestures events (Olli Pettay 著, 版) http://lists.w3.org/Archives/Public/www-dom/2009AprJun/0134.html

[23] IRC logs: freenode / #whatwg / 20100625 ( 版) http://krijnhoetmer.nl/irc-logs/whatwg/20100625

[25] IRC logs: freenode / #whatwg / 20110212 ( ( 版)) http://krijnhoetmer.nl/irc-logs/whatwg/20110212

[26] IRC logs: freenode / #whatwg / 20110213 ( ( 版)) http://krijnhoetmer.nl/irc-logs/whatwg/20110213

[27] IRC logs: freenode / #whatwg / 20110215 ( ( 版)) http://krijnhoetmer.nl/irc-logs/whatwg/20110215#l-644

[28] IRC logs: freenode / #whatwg / 20110221 ( ( 版)) http://krijnhoetmer.nl/irc-logs/whatwg/20110221

[29] IRC logs: freenode / #whatwg / 20110223 ( ( 版)) http://krijnhoetmer.nl/irc-logs/whatwg/20110223

[30] IRC logs: freenode / #whatwg / 20110301 ( ( 版)) http://krijnhoetmer.nl/irc-logs/whatwg/20110301

[31] IRC logs: freenode / #whatwg / 20110303 ( ( 版)) http://krijnhoetmer.nl/irc-logs/whatwg/20110303

[32] IRC logs: freenode / #whatwg / 20110607 ( ( 版)) http://krijnhoetmer.nl/irc-logs/whatwg/20110607#l-492

[33] IRC logs: freenode / #whatwg / 20110802 ( ( 版)) http://krijnhoetmer.nl/irc-logs/whatwg/20110802

[34] Web Applications 1.0 r6551 Update Event interfaces to use constructors instead of init*Event methods; remove some typedefs. ( ( 版)) http://html5.org/tools/web-apps-tracker?from=6550&to=6551

[35] Compound Document by Reference Framework 1.0 ( ( 版)) http://www.w3.org/TR/CDR/#events

[36] IRC logs: freenode / #whatwg / 20130105 ( ( 版)) http://krijnhoetmer.nl/irc-logs/whatwg/20130105

[37] Delivery Context: Client Interfaces (DCCI) 1.0 ( ( 版)) http://www.w3.org/TR/2007/CR-DPF-20071221/#sec-events

[38] XBL 2.0 ( ( 版)) http://dev.w3.org/2006/xbl2/Overview.html#event-handlers

[39] IRC logs: freenode / #whatwg / 20130220 ( ( 版)) http://krijnhoetmer.nl/irc-logs/whatwg/20130220

[40] DOM4 Events ( ( 版)) http://html5labs.interoperabilitybridges.com/dom4events/

[51] IRC logs: freenode / #whatwg / 20130305 ( ( 版)) http://krijnhoetmer.nl/irc-logs/whatwg/20130305

[52] Accessible Rich Internet Applications (WAI-ARIA) 1.0 ( ( 版)) http://www.w3.org/WAI/PF/aria/complete#def_event

[53] DOM Event I/O Processor for SCXML ( ( 版)) http://www.w3.org/TR/2015/NOTE-dom-iop-20150806/

[54] DOM Event I/O Processor for SCXML ( ( 版)) http://www.w3.org/TR/2015/NOTE-scxml-dom-iop-20150811/

This Note was once published on 6 August 2015 as a First Public Working Group Note. However, after the publication we got comments that the Note's having a shortname of "dom-iop" was misleading since the Note does not belog to the core set of the DOM specifications but describes the DOM I/O processor for SCXML. Therefore this Note is now republished with a clearer shortname of "scxml-dom-iop" to avoid confusion.

[55] 28455 – Add a method to add a one-time event listener ( 版) https://www.w3.org/Bugs/Public/show_bug.cgi?id=28455

[57] http://www.w3.org/TR/xml-events#s_intro

An event is the representation of some asynchronous occurrence (such as a mouse click on the presentation of the element, or an arithmetical error in the value of an attribute of the element, or any of unthinkably many other possibilities) that gets associated with an element (targeted at it) in an XML document.

事象とは、 XML文書中の要素と関連付けられる (対象付けされる) 何らかの非同期な出来事 (要素の表現上でのマウスかちっ、 要素の属性中の値の算術的誤り、 その他考えられない他の可能性など) の表現です。

[58] IRC logs: freenode / #whatwg / 20121204 ( ( 版)) http://krijnhoetmer.nl/irc-logs/whatwg/20121204

[59] trunk/Source/WebCore/dom の EventNames.in – WebKit ( 版) http://trac.webkit.org/browser/trunk/Source/WebCore/dom/EventNames.in