CustomEvent インターフェイスはどんな目的のアプリケーションからも初期化されるイベントを表現します。

註: この機能は Web Workers 内で利用可能です。

コンストラクター

CustomEvent()
CustomEvent を生成します。

プロパティ

CustomEvent.detail 読取専用
イベント初期化時にどんなデータでも受け渡すことができます。

このインターフェイスは親である Event からプロパティを継承します:

Event.bubbles 読取専用
イベントが DOM を通して 浮上 (bubble up) するかを示す boolean 値です。
Event.cancelBubble
Event.stopPropagation() の歴史的な別名です。イベントハンドラーから戻る前に値 true を設定すると、イベントの伝播を抑制します。
Event.cancelable 読取専用
イベントがキャンセル可能かを示す boolean 値です。
Event.composed 読取専用
shadow DOM と 通常の DOM の間の境界を越えてイベントが伝播できるかをを示す Boolean 値です。
Event.currentTarget 読取専用
イベントが現在登録されているターゲットへの参照。これは、現在イベントの送信先として予定されているオブジェクトです。これはリターゲティングによって、途中で変更できます。
Event.deepPath 
イベントの伝播で通り抜けた DOM NodeArray です。
Event.defaultPrevented 読取専用
event.preventDefault() がイベントで呼ばれたかどうかを示します。
Event.eventPhase 読取専用
イベントの流れのうちどの段階が処理されているかを示します。
Event.explicitOriginalTarget 読取専用
イベントの明確な最初のターゲット (Mozilla 特有)。
Event.originalTarget 読取専用
イベントの再ターゲット前の最初のターゲット (Mozilla特有)。
Event.returnValue
Event.preventDefault() および Event.defaultPrevented の、(古いバージョンの Microsoft Internet Explorer 由来の) 非標準の代替手段です。
Event.scoped 読取専用
イベントが shadow root を通過して標準 DOM に伝播するかを示す Boolean 値です。このプロパティは composed に改名されました。
Event.srcElement
Event.target の、(古いバージョンの Microsoft Internet Explorer 由来の) 非標準の別名です。
Event.target 読取専用
イベントが最初に送出されたターゲットへの参照。
Event.timeStamp 読取専用
イベントが生成された時刻をミリ秒単位で示します。仕様書ではこの値をエポックから経過した時間としていますが、実際のブラウザの定義は異なります。また、値を DOMHighResTimeStamp に変更する作業が進行中です。
Event.type 読取専用
イベントの名前 (大文字小文字を区別しません)。
Event.isTrusted 読取専用
イベントがブラウザーによって開始されたか (たとえばユーザークリックの後)、または、スクリプトによって開始されたか (event.initEvent のようなイベントを作るメソッドの使用) どうかを示します。

メソッド

CustomEvent.initCustomEvent()

CustomEvent オブジェクトを初期化します。もし該当イベントがすでに移譲されたことがある場合、この関数は何もしません。

このインターフェイスは親である Event から関数を継承します:

Event.initEvent()
生成されたイベントの値を初期化します。イベントがすでにディスパッチされている場合は、何も行いません。
Event.preventBubble() 廃止 Gecko 24
イベントが 浮上 (bubble up) しないようにします。廃止されたので、代わりに event.stopPropagation を使ってください。
Event.preventCapture() 廃止 Gecko 24
廃止されたので、event.stopPropagation を使ってください。
Event.preventDefault()
イベントをキャンセルします (キャンセル可能な場合のみ)。
Event.stopImmediatePropagation()
この特定のイベントのために、他のいかなるリスナーも呼び出されません。同じ要素に付けられたリスナーも、後で横断される(たとえばキャプチャー段階の) 要素に付けられたリスナーも呼び出されません。
Event.stopPropagation()
これ以上イベントが 伝播 (propagation) するのを停止します。
Event.getPreventDefault()
非標準です。Event.defaultPrevented の値を返します。代わりに Event.defaultPrevented を使用してください。

仕様

仕様 ステータス コメント
DOM
CustomEvent の定義
現行の標準 初回定義。

ブラウザー互換性

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!

機能 Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
基本サポート (有) (有) 6 9 11 5.1 (533.3)
CustomEvent() コンストラクター 15 (有) 11 未サポート 11.60 Nightly build (535.2)
ワーカー内部で利用可能 (有) (有) 48 (48) (有) (有) (有)
機能 Android Edge Firefox Mobile (Gecko) IE Phone Opera Mobile Safari Mobile
基本サポート ? (有) ? ? ? ?
ワーカー内部で利用可能 (有) (有) 48.0 (48) (有) (有) (有)

特権を持つコードから持たないコードへのイベント発行

CustomEvent を特権を持つコード (つまり、エクステンション) から持たないコード (つまり、ウェブページ) へ発行する時、セキュリティの問題を考慮すべきです。Firefox と他の Gecko アプリケーションは、自動的にセキュリティホールを防ぐ為、他者から直接利用される1つのコンテキスト内で作られるオブジェクトを制限します。しかし、この制限によりコードが期待した通りに動作しない可能性があります。

CustomEvent オブジェクトが作られている間、同じ window からオブジェクトを作る必要があります。作られた CustomEvent の detail 属性は同じ制限の影響を受けるでしょう。制限のないコンテンツからは String と Array の値は読み込み可能ですが、カスタムオブジェクトは読み込めません。カスタムオブジェクトを使用している間、Components.utils.cloneInto() を使ってコンテンツのスクリプトから読み込み可能なオブジェクトの属性を定義する必要があるでしょう。

// doc はコンテンツのドキュメントの参照
function dispatchCustomEvent(doc) {
  var eventDetail = Components.utils.cloneInto({foo: 'bar'}, doc.defaultView);
  var myEvent = doc.defaultView.CustomEvent("mytype", eventDetail);
  doc.dispatchEvent(myEvent);
}

しかし、関数を外部にさらすと、chrome 特権でコンテンツスクリプトの実行を許可することになり、脆弱性となる可能性があることを覚えておく必要があります。

参照

ドキュメントのタグと貢献者

このページの貢献者: dskmori, mikamikuh
最終更新者: dskmori,