[34] [[DOM]] の[DFN[[RUBYB[[[イベントハンドラー]]]@en[event handler]]]]は、 [[オブジェクト]]や[[要素]]の[[属性]]として1つ指定できる簡易版の[[イベントリスナー]]です。 [39] [[オブジェクト]]にあるものを[DFN[[RUBYB[イベントハンドラーIDL属性]@en[event handler IDL attribute]]]] [WEAK[(旧・[DFN[[RUBYB[イベントハンドラーDOM属性]@en[event handler DOM attribute]]]])]]、 [[要素]]にあるものを[DFN[[RUBYB[イベントハンドラー内容属性]@en[event handler content attribute]]]]といいます [SRC[>>35]]。 * 仕様書 [REFS[ - [35] [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2013-05-05 06:42:10 +09:00]] 版) ]REFS] * イベントハンドラー [97] [[イベントハンドラー]]は、[[イベントリスナー]]の特殊形です。 [[イベントハンドラー]]は特定の[[対象]]となる[[オブジェクト]]について、 特定の[[イベント型]]について、 [[捕獲]]でないフェーズ ([[bubbling]] フェーズまたは[[対象]]フェーズ) の[[イベントリスナー]]として働きます。 [36] [[イベントハンドラー]]の[[イベント型]]を[DFN[[RUBYB[[[イベントハンドラーイベント型]]]@en[event handler event type]]]] [SRC[>>35]] といいます。[[イベントハンドラー]]の名前は、[[イベントハンドラーイベント型]]の前に [CODE[[[on]]]] をつけたものです [SRC[>>35]]。[[イベントハンドラー]]の名前は[[属性名]]として使われます。 [EG[ [98] 例えば [CODE(DOMe)@en[[[click]]]] [[イベント]]に対応する[[イベントハンドラー]]の名前は [CODE(DOMa)@en[[[onclick]]]] となります。 [CODE(DOMi)@en[[[Window]]]] [[オブジェクト]]には [CODE(DOMa)@en[[[onclick]]]] [[属性]]があります。また [CODE(HTMLe)@en[[[a]]]] [[要素]]にも [CODE(HTMLa)@en[[[onclick]]]] [[属性]]があります。 ]EG] [37] とはいえ任意の[[イベント型]]の名前に [CODE[[[on]]]] をつければ良いものではなく、 仕様で定義され、[[利用者エージェント]]が実装している[[イベントハンドラー]]のみ機能します。 [EG[ [99] 例えば [CODE[foobar]] という[[イベント型]]はどの仕様でも定義されていないので、 [CODE[onfoobar]] [[属性]]を設定しても、 ([[著者]]が特定の [[Webページ]]のみで使われる独自の[[イベント型]]として使うのは自由ですが、) [CODE[foobar]] [[イベント]]が [[dispatch]] されたときに呼び出されるわけではありません。 [100] 更に、 [CODE(DOMe)@en[[[DOMContentLoaded]]]] は [[HTML Standard]] で定義されている[[イベント型]]ではありますが、 [CODE[onDOMContentLoaded]] という[[イベントハンドラー]]はどこでも定義されていないので、 そのような[[属性]]を設定しても、 [[dispatch]] されたときに呼び出されるわけではありません。 ]EG] [38] [[イベントハンドラー]]の値は、 - [[null]] - [[コールバック]] - [[内部未コンパイル生ハンドラー]] ... の3つのいずれかです。初期値は [[null]] です。 [SRC[>>35]] [[イベントハンドラーIDL属性]]により、 または[[イベントハンドラー内容属性]]により、[[null]] 以外の値に設定することができます。 [64] [[イベントハンドラー]]がはじめて [[null]] 以外の値に設定された時に、 次のような[[イベントリスナー]]が対応するオブジェクト [WEAK[([[文脈オブジェクト]]とは限らないことに注意 (>>106)。)]] の[[イベントリスナー]]のリストの末尾に追加されます [SRC[>>35]]。 [FIG[ - [114] [[イベント型]]は、[[イベントハンドラーイベント型]] - [115] [[捕獲]]は、[[偽]] - [116] [[リスナー]]は、[[イベントハンドラー処理アルゴリズム]] ]FIG ;; [65] [[null]] に設定されている間は[[イベントリスナー]]は追加されません。また [[null]] に変更されたり、別の非 [[null]] 値に変更されたりしても[[イベントリスナー]]は登録されたままになります。 ;; [66] [[イベントハンドラー]]と[[イベントリスナー]]や[[イベントハンドラー処理算法]]は別のものとなります。 [[イベントハンドラー]]から [CODE(JS)@en[[[arguments]].[[callee]]]] でアクセスできるのは[[イベントハンドラー]]です。[[イベントリスナー]]や[[イベントハンドラー処理算法]]に [[JavaScript]] からアクセスする方法はありません。[[イベントハンドラー]]を [CODE(DOMm)@en[[[removeEventListener]]]] しても、それ自体は[[イベントリスナー]]として登録されていないので、削除できません。 * イベントハンドラー IDL 属性 [40] [[イベントハンドラーIDL属性]]は、[[イベントハンドラー]]に対応すると定義されている [[IDL属性]]で、 名前は[[イベントハンドラー]]の名前と同じであり、 [[型]]は原則として [CODE(DOMi)@en[[[EventHandler]]]] です。 ;; [76] [CODE(DOMa)@en[[[onerror]]]] の[[型]]は [CODE(DOMi)@en[[[OnErrorEventHandler]]]], [CODE(DOMa)@en[[[onbeforeunload]]]] の[[型]]は [CODE(DOMi)@en[[[OnBeforeUnloadEventHandler]]]] です。 [75] [[WebIDL]] の[[型]] [DFN[[CODE(DOMi)@en[[[EventHandler]]]]]] は、[[コールバック]]または [[null]] です。[[コールバック]]以外が指定された時は、 [[null]] とみなされます ([CODE(IDL)[[[TreatNonCallableAsNull]]]])。[[コールバック]]は、 [CODE(DOMi)@en[[[Event]]]] 1つを[[引数]]とし、任意 ([CODE(IDL)@en[[[any]]]]) の返り値となっています。 [SRC[>>35]] ;; [83] [CODE(DOMi)@en[[[OnErrorEventHandler]]]] は[[エラーの報告]]用の[[引数]]を取ることもできます。 [CODE(DOMi)@en[[[OnBeforeUnloadEventHandler]]]] は [CODE(DOMi)@en[[[DOMString]]]] または [[null]] を返り値とします。 [SRC[>>35]] ;; [105] [[JavaScript]] では、 [CODE(JS)@en[[[Function]]]] を [CODE(DOMi)@en[[[ErrorHandler]]]] として使うことができます。 [41] ほとんどの場合、[[イベントハンドラーIDL属性]]はその[[文脈オブジェクト]]の[[イベントハンドラー]]に対応します。 [106] 例外的に [CODE(HTMLe)@en[[[body]]]] [[要素]]や [CODE(HTMLe)@en[[[frameset]]]] [[要素]]の[[イベントハンドラーIDL属性]]の一部は、 [CODE(DOMi)@en[[[Window]]]] [[オブジェクト]]の[[イベントハンドラー]]に対応します。 [CODE(DOMi)@en[[[Window]]]] に属さない [CODE(HTMLe)@en[[[body]]]] [[要素]]のように、 対応する[[オブジェクト]]が存在していない[[イベントハンドラーIDL属性]]も存在します [SRC[>>35]]。 [42] [[取得時]]には、[[イベントハンドラーの現在値を取得]]して得られた値を返さなければ[['''なりません''']] ([[例外]]が投げられる場合もあります)。ただし対応する[[オブジェクト]]が存在しないなら、 [[null]] を返さなければ[['''なりません''']]。 [SRC[>>35]] [46] [[設定時]]には、指定された値を[[イベントハンドラー]]としなければ[['''なりません''']]。 ただし対応する[[オブジェクト]]が存在しないなら、何もしては[['''なりません''']]。 [SRC[>>35]] [88] [CODE(DOMi)@en[[[MessagePort]]]] の [CODE(DOMa)@en[[[onmessage]]]] は最初に設定された時に[[ポート・メッセージ・キュー]]が有効になる ([CODE(DOMm)@en[[[start]]]] [[メソッド]]が呼ばれたかのように振る舞う) という副作用があります。 ;; [107] [CODE(DOMm)@en[[[addEventListener]]]] によって [CODE(DOMe)@en[[[message]]]] に登録してもこのような副作用はありません。 * イベントハンドラー内容属性 [47] [[イベントハンドラー内容属性]]は、[[イベントハンドラー]]に対応すると定義されている[[内容属性]]で、 [[名前空間]]は[[null名前空間]]で、[[局所名]]は[[イベントハンドラー]]の名前です [SRC[>>35]]。 [48] [[イベントハンドラー内容属性]]の[[属性値]]は、 [[JavaScript]] のコードであって、 [[自動セミコロン挿入]]を経て [CODE(JS)@en[[[FunctionBody]]]] [[生成規則]]に一致するようなものでなければ[['''なりません''']] [SRC[>>35]]。 ;; [49] すなわち、 [[JavaScript]] の[[関数]]の括弧の中身でなければなりません。 [112] [[イベントハンドラー内容属性]]が設定されると、[[イベントハンドラー]]はその[[属性値]]による[[内部生未コンパイルハンドラー]]に設定されます [SRC[>>35]]。[[イベントハンドラー内容属性]]が削除されると、[[イベントハンドラー]]は [[null]] に設定されます [SRC[>>35]]。 * 特別なイベントハンドラーの一覧 [FIG[ - [43] [CODE(HTMLe)@en[[[body]]]] や [CODE(HTMLe)@en[[[frameset]]]] の[[イベントハンドラーIDL属性]]、[[イベントハンドラー内容属性]]の一部 -- 当該[[オブジェクト]]ではなく [CODE(DOMi)@en[[[Window]]]] に対応する[[イベントハンドラー]]です。 - [44] [CODE(DOMi)@en[[[MessagePort]]]] の [CODE(DOMa)@en[[[onmessage]]]] -- 副作用を持ちます (>>88)。 - [45] [CODE(DOMi)@en[[[Window]]]]/[CODE(DOMi)@en[[[WorkerGlobalScope]]]] の [CODE(DOMa)@en[[[onerror]]]] -- [DEL[[[DOMイベント]]以外でも使われます。]] -- [[エラーの報告]]を参照。 - [108] [CODE(DOMe)@en[[[onbeforeunload]]]] -- 返り値が異なります。 - [109] [CODE(DOMe)@en[[[onmouseover]]]] -- 返り値の解釈が異なります。 ]FIG] * イベント・ハンドラー処理算法 [DEL[ [50] [[スクリプトが有効]]な[[閲覧文脈]]にある [CODE(DOMi)@en[[[Document]]]] が所有する[[要素]]の[[イベント・ハンドラー内容属性]]が設定された時、次のように処理しなければ[['''なりません''' [SRC[>>35]]。 ;; [51] そのような[[文書]]に [[adopt]] された時も同様と思われます。 [FIG[ = [52] 対応する[[イベント・ハンドラー]]を [[null]] に設定します。 = [53] [[JavaScript]] の[[スクリプト実行環境]]を準備します。 = [54] [VAR@en[body]] を[[イベント・ハンドラー内容属性]]の新しい値とします。 = [55] [VAR@en[body]] が [CODE@en[[[FunctionBody]]]] として構文解析可能でないか、 構文解析によって [[early error]] を検出した場合は、[[イベント・ハンドラー内容属性を誤りに設定]]し、 停止します。 = [56] [VAR@en[body]] が [[Use Strict Directive]] を含む [[Directive Prologue]] ([CODE(JS)[[["use strict"]]]]) から始まるかどうかを [VAR@en[strict]] とします。 = [57] >>53 の[[スクリプト実行環境]]を使って次のような[[関数]]オブジェクトを作り、 [[スクリプト]]の [[list of code entry-points]] に入れます。 =- [77] 引数リスト [VAR[FormalParameterList]]: [CODE(DOMi)@en[[[Window]]]] の [CODE(DOMa)@en[[[onerror]]]] [[属性]]なら [VAR[event]], [VAR[source]], [VAR[lineno]], [VAR[colno]], [VAR@en[error]] の5つ、それ以外なら [VAR[event]] の1つ =- [78] 関数本体 [VAR@en[FunctionBody]]: >>55 の構文解析結果 =- [79] 字句環境 [VAR@en[Scope]]: =-= [CODE[[VAR@en[Scope]] := [[NewObjectEnvironment]]([[要素]]の [CODE(DOMi)@en[[[Document]]]], [[大域環境]])]] =-= [[要素]]が[[フォーム所有子]]を持つなら、 [CODE[[VAR@en[Scope]] := [[NewObjectEnvironment]]([[要素]]の[[フォーム所有子]], [VAR@en[Scope]])]] =-= [CODE[[VAR@en[Scope]] := [[NewObjectEnvironment]]([[要素]], [VAR@en[Scope]])]] =- [80] [VAR@en[Strict]]: >>56 の [VAR@en[strict]] = [58] [[スクリプトの大域オブジェクト]]、[[スクリプトの閲覧文脈]]、 [[スクリプトの文書]]、[[スクリプトの参照元情報源]]、[[スクリプトのURL文字符号化]]、 [[スクリプトの基底URL]]を当該[[要素]]による[[節点からスクリプト設定の決定]]により設定します。 = [59] 対応する[[イベント・ハンドラー]]を >>57 の[[関数]]とします。 ]FIG] ]DEL] ;; この説明は少し古いです。 [60] [DFN[[RUBYB[[[イベント・ハンドラー内容属性を誤りに設定]]]@en[set the event handler content attribute to an error]]]]するとは、対応する[[イベント・ハンドラー]]を[DFN[[RUBYB[[[内部誤り値]]]@en[internal error value]]]]に設定することをいいます。 [[内部誤り値]]は[RUBYB[誤り条件]@en[error condition]]を表現するもので、 [[イベント・ハンドラー内容属性]]が設定された[[資源]]の [[URL]] や[[行番号]]を記録するものです。 [SRC[>>35]] [61] [[イベント・ハンドラー内容属性]]が削除された時は対応する[[イベント・ハンドラー]]を [[null]] に設定しなければなりません。 [SRC[>>35]] ;; [62] [[スクリプトが有効]]でない[[閲覧文脈]]に属しているか[[閲覧文脈]]に属していない[[文書]]に [[adopt]] された場合も同様でしょうかね・・・。 ;; [63] [[閲覧文脈]]に属さない[[文書]]が所有する[[要素]]の[[イベント・ハンドラー内容属性]]の場合は設定しても[[イベント・ハンドラー]]は変更されません [SRC[>>35]]。 [67] [[イベント・ハンドラー]] [VAR@en[H]] と[[イベント]] [VAR@en[E]] に関する[DFN[[RUBYB[[[イベント・ハンドラー処理算法]]]@en[the event handler processing algorithm]]]]は次のように定義されています [SRC[>>35]]: [FIG[ = [68] [VAR@en[H]] が [[null]] なら停止します。 = [69] [VAR@en[H]] が[[内部誤り値]]なら[[イベント・ハンドラー]]を [[null]] に設定し、当該 [CODE(DOMi)@en[[[Document]]]] の [CODE(DOMi)@en[[[Window]]]] の [CODE(DOMa)@en[[[onerror]]]] を使って[[エラー]]を報告し、停止します。 = [70] [VAR@en[H]] の[[コールバック]]を呼び出します。 -- 引数は [VAR@en[E]] とします。 -- [[callback this value]] は [VAR@en[E]] の [CODE(DOMa)@en[[[currentTarget]]]] とします。 -- [VAR@en[return value]] を[[返り値]]とします。 = [71] [[イベント型][]が [CODE(DOMa)@en[[[mouseover]]]] なら、 [VAR@en[return value]] が [[WebIDL]] の[[真]]値の時[[イベント]]を[[取り消し]]します。 = [72] そうでなく [CODE(DOMe)@en[[[beforeunload]]]] なら、 == [84] [VAR@en[return value]] が [[null]] なら、[[イベント]]を[[取り消し]]します。 == [85] そうでなく、 [VAR@en[E]] が [CODE(DOMi)@en[[[BeforeUnloadEvent]]]] で、 [VAR@en[E]] の [CODE(DOMa)@en[[[returnValue]]]] が[[空文字列]]である時、 [CODE(DOMa)@en[[[returnValue]]]] を [VAR@en[return value]] に設定します。 = [73] それ以外なら、[VAR@en[return value]] が [[WebIDL]] の[[偽]]値の時[[イベント]]を[[取り消し]]します。 ]FIG] [81] つまり[[イベント・ハンドラー]]が[[コールバック]]であるときのみそれが実行されます。 また返り値により[[イベント]]の [CODE(DOMa)@en[[[defaultPrevented]]]] や [CODE(DOMa)@en[[[returnValue]]]] の値を設定することができます。 [82] [[例外]]は特に[[捕捉]]されていないので、呼び出し元の方へ伝播していくことになります ([[イベント・リスナー]]の項を参照)。 [EG[ [74] >>70 の [[callback this value]] の規定と、 [CODE(HTMLe)@en[[[body]]]] の [CODE(HTMLa)@en[[[onload]]]] が [CODE(DOMi)@en[[[Window]]]] [[オブジェクト]]の[[イベント・ハンドラー]]であることから、 [PRE(HTML example code)[ ]PRE] ... は文書の読み込み時に [CODE["[object Window]"]] が、[[クリック]]時に [CODE["[object HTMLBodyElement]"]] が [SRC[>>35]] [CODE(JS)@en[[[alert]]]] されることとなります。 ]EG] * イベント・ハンドラーの一覧 [8] この種の[[属性]]のリストは[[事象取扱器属性の一覧]]を参照してください。 * 歴史 ** スクリプト言語の指定 - [1] [[HTML]] の on[VAR[*]] 属性 (非推奨。) で [[JavaScript]] を使う時に、先頭に [[javascript:]] って書く DQN がなぜか多いな。 - [2] >>1 まあ [[Content-Script-Type:]] 問題についての[[不思議マーク付け]]的解法なのかもしれんが。。。(w - [3] >>1-2 にしても、文法エラーにならずに動く (こともある。) なんて、一体どうなっているんだ? JavaScript 的にはどういう扱いになってるんだろう? それとも [[UA]] の補正なのかな? - [4] >>3 [[ラベル]]。 [5] >>1-4 [[WinIE]] だとそれが“ちゃんと”はたらいて、 [CODE[vbscript:]] と書くと [[VBScript]] になったりしちゃいます。 [10] >748 名前:Name_Not_Found[sage] 投稿日:2005/10/08(土) 04:12:41 ID:??? > HTML のイベント属性に javascript: を書くことについて。 - 文法的には、ただのラベルである。 - そこそこ誰でも知っていて、なんとなく使ったり読んだりしている。 - WinIE が、javascript, jscript, vbscript, vbs, perlscript に反応する。   (プラットフォームも含め、過不足あれば指摘してくれ。) - しかし、きちんとした仕様説明が見当たらない (探せなかっただけかもしれないが)。 ラベル ttp://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/12_Statements.html#LabelledStatement   FOO: for ( .. ) for ( .. ) if ( .. ) continue FOO; におけるラベル FOO と同じ。 ラベルの例をもう一つ。   

alert(6)

どうやら、良く練られた拡張ではなく、姑息な特例だと言わざるを得ない。 ;; [CITE@ja[+ JavaScript の質問用スレッド vol.41 +]] ** 内部での表現 [9] [CITE[Hawk's W3 Laboratory : DHTML Tips : イベントハンドラに関する考察]] [DEL[]] > :更新日時: 2004年09月22日 > 結論から言うと、この「属性の中身のコード」は、対象となる要素に対応するHTMLElementオブジェクトのプロパティに、関数の形で格納されています。イベント発生時にはそのオブジェクトのメソッドとして実行されるわけです。 > 実体が関数であることは、イベント内でargumentsを参照できることから分かります。更に一歩進んでarguments.calleeにアクセスすれば実体の関数そのものにアクセスできます。 > 以下の例では関数の内容を表示しています。alert(arguments.callee);という記述が "そのまま"表示されるのが確認できるでしょう。 > [PRE(HTML example code)[ リンク ]PRE] ただし、実際に試してみれば分かりますが、表示内容(すなわち実装方法)はブラウザによって大きく2系統に分かれます。上記の例はIEでは以下のように表示されるはずです。 > [PRE[ function anonymous() { alert(arguments.callee); } ]PRE] > anonymous(匿名)とは無名のFunctionオブジェクトに仮に付けられた名です。つまりIEでは、単に属性値のスクリプトコードを実行するだけの関数が生成され、対象となるオブジェクトのプロパティに格納されることになります。 > 一方で、NN4.XおよびGeckoベースのブラウザでは以下のようになります。 > [PRE[ function onmouseover(event) { alert(arguments.callee); } ]PRE] > Operaではこうです。 > [PRE[ function anonymous(event) { alert(arguments.callee); } ]PRE] > KHTMLベースのブラウザではこうなります。 [PRE[ function (event) { alert(arguments.callee); } ]PRE] > 名前の有無や名前が無い場合の表現など、瑣末な違いはありますが、いずれもeventという仮引数が存在していることが大きな特徴です。この仮引数はイベントオブジェクト(NN4.Xにおいてはevent object、その他の場合はDOM2 EventsにおけるEventインターフェイスを実装したオブジェクト)を表しています。 > NN4.Xのイベントモデルでも、DOM2 Eventsでも、イベントに関する情報はイベントオブジェクトの形で、イベントハンドラとして登録された関数の第一引数に渡されます。だからこのような形の関数になるのは理にかなっているのですが、そのとき仮引数の名前が”event”になることなどは特に標準化されていないので注意が必要です。 > またこのeventという名前は、偶然にも?IEのwindow.eventと同じなので、 > [PRE(HTML example code)[ リンク ]PRE] このように記述すれば、関数fooにはブラウザを問わず第一引数にeventオブジェクトが渡されます(もっともfoo内での条件分岐は必要になりますが)。 ;; [11] [[関数]]内で[[関数]]名を使って再起呼び出しできるのかな? ** [CODE(JS)@en[window.event]] [6] [[WinIE7]], [[Opera]], [[WebKit]] は対応しているみたいです。 [7] [[Firefox3]] は対応していないみたいです。 ;; [12] [[事象取扱器属性]]の時だけでなく、 [CODE(DOMm)@en[[[attachEvent]]]] した[[事象取扱器]]の時にも設定されているの? ** HTML Standard [13] [CITE@en[(X)HTML5 Tracking]] ([TIME[2009-09-30 00:13:50 +09:00]] 版) [14] [CITE['''['''whatwg''']''' Additional onxxxx event attributes for DOM Level3 Events]] ([TIME[2010-12-01 08:26:00 +09:00]] 版) [15] [CITE@en[Web Applications 1.0 r5933 Be better about how we define the creation of scripts for event handler attributes (specifically, how we interact with the JS spec).]] ( ([TIME[2011-03-04 09:52:00 +09:00]] 版)) [16] [CITE[''''''[''''''whatwg'''''']'''''' on* attributes on DOM elements]] ( ([TIME[2011-06-18 08:37:31 +09:00]] 版)) [17] [CITE[IRC logs: freenode / #whatwg / 20110728]] ( ([TIME[2011-08-07 22:56:46 +09:00]] 版)) [18] [CITE[IRC logs: freenode / #whatwg / 20111117]] ( ([TIME[2011-11-19 14:21:09 +09:00]] 版)) [19] [CITE[''''''[''''''whatwg'''''']'''''' API design restrictions due to barewords in onxxx="" attributes]] ( ([TIME[2011-12-03 12:41:47 +09:00]] 版)) [20] [CITE@en[Writing forward-compatible websites - MDN]] ( ([TIME[2011-12-03 12:41:52 +09:00]] 版)) [21] [CITE[IRC logs: freenode / #whatwg / 20120427]] ( ([TIME[2012-05-06 12:41:01 +09:00]] 版)) [22] [CITE[IRC logs: freenode / #whatwg / 20120518]] ( ([TIME[2012-05-31 20:23:25 +09:00]] 版)) [23] [CITE@en[''''''[''''''proximity'''''']'''''' HTML's WebIDL Function]] ( ([[Marcos Caceres]] 著, [TIME[2012-05-28 20:25:42 +09:00]] 版)) [24] [CITE[IRC logs: freenode / #whatwg / 20120620]] ( ([TIME[2012-07-04 21:39:52 +09:00]] 版)) [25] [CITE@en[Web Applications 1.0 r7235 Improve compatibiliy for legacy features.]] ( ([TIME[2012-08-10 03:02:00 +09:00]] 版)) [26] [CITE[''''''[''''''whatwg'''''']'''''' Specification unclear about how HTMLElement.prototype.onscroll's getter/setter should behave for "body" elements]] ( ([TIME[2012-12-04 06:17:20 +09:00]] 版)) [27] [CITE@en[Web Applications 1.0 r7560 Remove some IDL shadowing. See also bug 20225.]] ( ([TIME[2012-12-04 09:43:00 +09:00]] 版)) [28] [CITE@en[Web Applications 1.0 r7561 Recent changes to body also apply to frameset.]] ( ([TIME[2012-12-05 03:47:00 +09:00]] 版)) [29] [CITE@en[WICD Mobile 1.0]] ( ([TIME[2010-08-17 16:50:39 +09:00]] 版)) [30] [CITE[''''''[''''''whatwg'''''']'''''' Specification unclear about how HTMLElement.prototype.onscroll's getter/setter should behave for "body" elements]] ( ([TIME[2013-01-08 08:36:05 +09:00]] 版)) [31] [CITE@en[Web Applications 1.0 r7638 Factor out some common event handler declarations in IDL.]] ( ([TIME[2013-01-08 08:45:00 +09:00]] 版)) [32] [CITE@en[Web Applications 1.0 r7667 Clean up how we define event handlers that are shadowed for Window on .]] ( ([TIME[2013-01-30 04:18:00 +09:00]] 版)) [33] [CITE@en[Web Applications 1.0 r7668 Fix bug 18626 and actually do what the previous checkin was trying to do.]] ( ([TIME[2013-01-30 05:12:00 +09:00]] 版)) [86] [CITE@en[Web Applications 1.0 r7933 Bring onbeforeunload handling closer to compatibility with the Web]] ([TIME[2013-06-08 06:01:00 +09:00]] 版) [87] [CITE@en[Bug 20637 – Remove onfullscreen* from HTML]] ( ([TIME[2013-06-08 22:18:21 +09:00]] 版)) [89] [CITE@en[Web Applications 1.0 r8097 Add more cross references to the new 'concept-window-document' thing, and clean up 's event definitions (I always forget to update that when I'm updating 's...).]] ( ([TIME[2013-07-28 00:48:00 +09:00]] 版)) [90] [CITE@en[Web Applications 1.0 r2529 MAJOR CHANGES: Revamp the way scripts are specified, along with their interaction with resolving relative URLs, etc. Give enough detail to justify objects in the DOM not being garbage collected randomly when still in use. Define script groups, to handle scripts going away during document.open() and session history navigation. Define why and how setTimeout(), database transactions, etc, handle page transitions. Drop the terms 'with' and 'without' script, use script is 'enabled'/'disabled' instead. Define 'unload' and 'beforeunload'. Rework how onfoo='' and .onfoo event handler attributes are defined. Rework how the content model of