Skip to main content Module events Copy item path Source animation_event_ctor 🔒 new AnimationEvent(type, options)(丸ごと未対応だった。CSS アニメーション
完了シミュレーションの el.dispatchEvent(new AnimationEvent ('animationend', {animationName})) という定番パターン)。基底の
Event プロパティは event_ctor を再利用し、animationName/
elapsedTime/pseudoElement を追加する。bc_registry 🔒 broadcast_channel_ctor 🔒 broadcast_channel_post_message 🔒 channel.postMessage(data)。仕様どおり送信元自身へは配送しない
(同名の他インスタンス全てへ message_port_deliver で配送する)。clipboard_event_ctor 🔒 new ClipboardEvent(type, options)(丸ごと未対応だった。el.dispatchEvent (new ClipboardEvent('paste', {clipboardData})) というコピー&ペースト
シミュレーションの定番パターン)。基底の Event プロパティは
event_ctor を再利用し、clipboardData のみ追加する(本物の
DataTransfer 実装はこの処理系に無いため、渡された値をそのまま透過する
簡略実装)。command_event_ctor 🔒 new CommandEvent(type, options)(Invoker Commands API / WHATWG HTML Standard。
<button command="..." commandfor="..."> のアクション時に発火するイベント。
command/source をプロパティとして保持する)。composition_event_ctor 🔒 new CompositionEvent(type, options)(丸ごと未対応だった。IME 変換中の
el.dispatchEvent(new CompositionEvent('compositionupdate', {data}))
というシミュレーションの定番パターン)。基底の Event プロパティは
event_ctor を再利用し、data のみ追加する。custom_event_ctor 🔒 new CustomEvent(type, {detail, bubbles, cancelable})。以前は options.bubbles
を一切読まず常に false を決め打ちしていたため、new CustomEvent('x', {bubbles: true}) が矛盾した bubbles === false なイベントになるバグだった
(event_ctor は bubbles を正しく読んでいたのに、こちらだけ漏れていた)。drag_event_ctor 🔒 new DragEvent(type, options)(丸ごと未対応だった。el.dispatchEvent(new DragEvent('drop', {dataTransfer})) というドラッグ&ドロップシミュレー
ションの定番パターン)。仕様どおり MouseEvent を継承するため
mouse_event_ctor をそのまま土台にし、dataTransfer を追加する(本物の
DataTransfer 実装はこの処理系に無いため、渡された値をそのまま透過する
簡略実装)。error_event_ctor 🔒 new ErrorEvent(type, options)(丸ごと未対応だった。reportError() は
内部でこの形の Event を素朴な Obj::plain() で組み立てていたが、
ユーザーコードから直接構築するコンストラクタ自体が存在しなかった)。
基底の Event プロパティは event_ctor を再利用し、
message/filename/lineno/colno/error を追加する。event_ctor 🔒 event_prevent_default 🔒 new Event(type, {bubbles, cancelable}) → 最小限の Event オブジェクト。
event.preventDefault()(new Event()/new CustomEvent() で手動構築した
イベント向け)。以前は無条件 no-op で defaultPrevented を一切追跡せず、
EventTarget.dispatchEvent() の戻り値(!defaultPrevented)が常に trueに
なってしまうバグだった。仕様どおり cancelable: false の場合は何もしない。 event_stop_immediate_propagation 🔒 event_target_add_event_listener 🔒 target.addEventListener(type, fn, options)。他の EventTarget 風オブジェクト
(XHR/AbortSignal 等)と違い、こちらは仕様どおり型ごとに複数リスナを保持する
(同じ関数参照の重複登録は無視する)。第3引数の {once} は保持され、
dispatchEvent 側で初回呼び出し後に自動解除する。capture は元々
「DOM ツリーを持たないこのクラスでは意味を持たないため無視する」設計
だったが、document.addEventListener(window_api.rsのdocument_add_ event_listener)がこの実装を再利用するようになった(2026-07-16)ため、
documentに対してはcaptureフェーズでの発火判定に使う必要が生じ、
エントリの4要素目として保持するよう拡張した(既存のXHR/AbortSignal
等の呼び出し元は4要素目を単に読まないため無害)。event_target_composed_path 🔒 event.composedPath()(EventTarget 経路用)。DOM ツリーが無いこのクラスでは
dispatchEvent 中のみ target プロパティが設定されるため、それを利用して
「発火中は [target]、発火前は []」という簡略化した経路を返す。event_target_ctor 🔒 event_target_dispatch_event 🔒 target.dispatchEvent(event)。仕様どおり !event.defaultPrevented を返す。event_target_listener_aborted 🔒 リスナ格納エントリの {signal} が abort 済みかどうか(addEventListener
の {signal} オプション。丸ごと未対応だった。2026-07-14 発見・実装)。 event_target_listener_capture 🔒 リスナ格納エントリの capture フラグを取り出す(4要素目。document
のキャプチャフェーズ発火判定用に2026-07-16新設。他のEventTarget風
オブジェクト(XHR/AbortSignal等)は3要素のまま登録されることがあり、
その場合は get(3) が None になり false へ安全にフォールバックする)。 event_target_listener_cb 🔒 リスナ格納エントリ([cb, once] の2要素配列)から実際のコールバックを取り出す。 event_target_listener_once 🔒 リスナ格納エントリの once フラグを取り出す。 event_target_listeners 🔒 event_target_remove_event_listener 🔒 target.removeEventListener(type, fn, options)。仕様どおり (listener, capture) の組が一致するエントリのみを取り除く。以前は capture を
一切見ず cb のみで判定していたため、同じ関数を {capture:true}/
{capture:false} で2回登録した場合に removeEventListener('type', fn)
(capture 省略=既定 false)を呼ぶと両方まとめて消えてしまい、
capture 側だけ残す意図が達成できないバグだった(documentのcapture
対応〔2026-07-16〕でcaptureをエントリへ保持するようになったことで
顕在化・同日発見・修正)。event_target_stop_propagation 🔒 event.stopPropagation()(EventTarget 経路用)。DOM ツリーが無いため
伝播そのものを止める効果は無い(dom_noop と同じ no-op)が、レガシー
event.cancelBubble が丸ごと未対応で追従していなかったバグの修正として
フラグだけは立てる。focus_event_ctor 🔒 new FocusEvent(type, options)(丸ごと未対応だった。el.dispatchEvent(new FocusEvent('focusout', {relatedTarget})) というフォーカス移動
シミュレーションの定番パターン)。基底の Event プロパティは
event_ctor を再利用し、relatedTarget のみ追加する。form_data_event_ctor 🔒 new FormDataEvent(type, options)(WHATWG HTML Standard。<form> 発火の formdata
イベント向け。formData をプロパティとして保持する)。hash_change_event_ctor 🔒 new HashChangeEvent(type, options)(丸ごと未対応だった。
window.addEventListener('hashchange', ...) 自体は既に登録経路が
あったが、oldURL/newURL を持つ専用イベントコンストラクタが無く
window.dispatchEvent(new HashChangeEvent('hashchange', {oldURL, newURL})) というシミュレーションの定番パターンが使えなかった)。
基底の Event プロパティは event_ctor を再利用する。input_event_ctor 🔒 new InputEvent(type, options)(丸ごと未対応だった。el.dispatchEvent(new InputEvent('input', {data:'a', inputType:'insertText'})) という入力
シミュレーションの定番パターン)。基底の Event プロパティは
event_ctor を再利用し、data/inputType/isComposing を追加する。keyboard_event_ctor 🔒 new KeyboardEvent(type, options)(丸ごと未対応だった。el.dispatchEvent (new KeyboardEvent('keydown', {key:'a', code:'KeyA'})) というキーボード
操作シミュレーションの定番パターン)。基底の Event プロパティは
event_ctor を再利用し、key/code/keyCode(レガシー)/which
(レガシー)/location/repeat/修飾キー4種を追加する。message_channel_ctor 🔒 message_event_ctor 🔒 new MessageEvent(type, options)(丸ごと未対応だった。window. postMessage()/reportError() は内部でこの形の Event を素朴な
Obj::plain() で組み立てていたが、ユーザーコードから同じ形を
dispatchEvent シミュレーション用に直接構築するコンストラクタ自体が
存在しなかった)。基底の Event プロパティは event_ctor を再利用し、
data/origin/lastEventId/source/ports を追加する。message_port_close 🔒 message_port_deliver 🔒 相手ポートへ message イベントを配送する。port.onmessage = fn(単一
リスナ方式)と port.addEventListener('message', fn)(複数リスナ方式)
の両方をサポートする(他の EventTarget 風オブジェクトと同じ二重経路)。 message_port_is_closed 🔒 message_port_new 🔒 message_port_post_message 🔒 port.postMessage(data)。structuredClone と同じアルゴリズムでデータを
複製してから相手側ポートへ同期配送する(close() 済みのポートからは
送信しても無視する)。mouse_event_ctor 🔒 new MouseEvent(type, options)(丸ごと未対応だった。el.dispatchEvent(new MouseEvent('click', {clientX, clientY})) というポインタ操作シミュレー
ションの定番パターン)。基底の Event プロパティは event_ctor を
再利用し、座標系4種/button/buttons/修飾キー4種/relatedTarget を
追加する。page_transition_event_ctor 🔒 new PageTransitionEvent(type, options)(丸ごと未対応だった。
window.addEventListener('pageshow'/'pagehide', ...) を BFCache
シミュレーションでテストする定番パターン向け)。pointer_event_ctor 🔒 new PointerEvent(type, options)(丸ごと未対応だった。el.dispatchEvent (new PointerEvent('pointerdown', {pointerId, pointerType:'touch'}))
というポインタ入力シミュレーションの定番パターン)。仕様どおり
MouseEvent を継承するため mouse_event_ctor をそのまま土台にし、
pointerId/width/height/pressure/tangentialPressure/tiltX/
tiltY/twist/pointerType/isPrimary を追加する。pop_state_event_ctor 🔒 new PopStateEvent(type, options)(丸ごと未対応だった。2026-07-17
発見。実ナビゲーション経由のpopstate発火(interp.rsのfire_ popstate)は既にstateプロパティ付きで正しく動いていたが、
window.dispatchEvent(new PopStateEvent('popstate', {state}))という
手動シミュレーションの定番パターン向けの専用コンストラクタ自体が
無かった)。基底の Event プロパティは event_ctor を再利用する。progress_event_ctor 🔒 new ProgressEvent(type, options)(丸ごと未対応だった。xhr. dispatchEvent(new ProgressEvent('progress', {loaded, total}))/
fetch 進捗イベントのシミュレーション定番パターン)。基底の Event
プロパティは event_ctor を再利用し、lengthComputable/loaded/
total を追加する。storage_event_ctor 🔒 new StorageEvent(type, options)(丸ごと未対応だった。window. dispatchEvent(new StorageEvent('storage', {key, newValue, oldValue}))
というクロスタブ同期シミュレーションの定番パターン。この処理系には
実際の複数タブ間 localStorage 同期機構は無いため、コンストラクタ経由の
手動発火のみをサポートする簡略実装)。基底の Event プロパティは
event_ctor を再利用し、key/oldValue/newValue/url/storageArea
を追加する。submit_event_ctor 🔒 new SubmitEvent(type, options)(丸ごと未対応だった。form. dispatchEvent(new SubmitEvent('submit', {submitter})) という「どの
ボタンで送信されたか」を伝えるシミュレーションの定番パターン)。基底の
Event プロパティは event_ctor を再利用し、submitter のみ追加する。toggle_event_ctor 🔒 new ToggleEvent(type, options)(WHATWG HTML Standard。<details> や popover 等の
トグル状態で発火するイベント。oldState/newState をプロパティとして保持する)。touch_ctor 🔒 new Touch(options)(Touch Events。丸ごと未対応だった)。この処理系の
USB HID スタックはマウス/キーボードのみでタッチスクリーン入力自体を
生成しないが、new TouchEvent(...) でタッチ操作をシミュレートする
テストコードから使われる定番パターンのため、コンストラクタ自体は
対応する(実際のタッチ入力イベント発火経路は無い)。touch_event_ctor 🔒 new TouchEvent(type, options)(丸ごと未対応だった。touches/
targetTouches/changedTouches は仕様上 TouchList だが、この
処理系は他のイベント同様プレーンな配列で簡略表現する。基底の
Event プロパティは event_ctor を再利用する。transition_event_ctor 🔒 new TransitionEvent(type, options)(丸ごと未対応だった。CSS トランジション
完了シミュレーションの定番パターン)。基底の Event プロパティは
event_ctor を再利用し、propertyName/elapsedTime/pseudoElement
を追加する。wheel_event_ctor 🔒 new WheelEvent(type, options)(丸ごと未対応だった。el.dispatchEvent(new WheelEvent('wheel', {deltaY})) というホイール操作シミュレーションの
定番パターン)。仕様どおり MouseEvent を継承するため mouse_event_ctor
をそのまま土台にし、deltaX/deltaY/deltaZ/deltaMode を追加する。