CustomEvent
インターフェイスは、何らかの目的でアプリケーションから初期化されるイベントを表します。
コンストラクター
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
Node
のArray
です。 Event.defaultPrevented
読取専用event.preventDefault()
がイベントで呼ばれたかどうかを示します。Event.eventPhase
読取専用- イベントの流れのうちどの段階が処理されているかを示します。
Event.explicitOriginalTarget
読取専用- イベントの明確な最初のターゲット (Mozilla 特有)。
Event.originalTarget
読取専用- イベントの再ターゲット前の最初のターゲット (Mozilla 特有)。
Event.returnValue
- Internet Explorer によって導入された歴史的なプロパティで、既存のサイトが動作し続けることを保証するために結果的に DOM 仕様書に導入されたものです。理想的には、
Event.preventDefault()
およびEvent.defaultPrevented
を代わりに使用してみるべきですが、選択次第ではreturnValue
を使用することができます。 Event.srcElement
Event.target
の、(古いバージョンの Microsoft Internet Explorer 由来の) 標準外の別名であり、ウェブの互換性の目的で一部の他のブラウザーでも対応が始められています。Event.target
読取専用- イベントが最初に送出されたターゲットへの参照。
Event.timeStamp
読取専用- イベントが生成された時刻をミリ秒単位で示します。仕様書ではこの値をエポックから経過した時間としていますが、実際のブラウザの定義は異なります。また、値を
DOMHighResTimeStamp
に変更する作業が進行中です。 Event.type
読取専用- イベントの名前 (大文字小文字を区別しません)。
Event.isTrusted
読取専用- イベントがブラウザーによって開始されたか (たとえばユーザークリックの後)、または、スクリプトによって開始されたか (event.initEvent のようなイベントを作るメソッドの使用) どうかを示します。
廃止されたプロパティ
Event.scoped
読取専用Boolean
で、指定されたイベントが標準 DOM の中のシャドウルートを通してバブルするかどうかを示します。このプロパティはcomposed
に改名されました。
メソッド
CustomEvent.initCustomEvent()
-
CustomEvent
オブジェクトを初期化します。もし該当イベントがすでに移譲されたことがある場合、この関数は何もしません。
このインターフェイスは親である Event
から関数を継承します。
Event.createEvent()
-
新しいイベントを作成し、これはその後で
initEvent()
メソッドを呼び出すことで初期化する必要があります。 Event.composedPath()
- (リスナーが呼び出されるオブジェクトへの) イベントのパスを返します。これはシャドウルートが
ShadowRoot.mode
が閉じた状態で作成されたシャドウツリーのノードを含みません。
Event.initEvent()
- 生成されたイベントの値を初期化します。イベントがすでにディスパッチされている場合は、何も行いません。
Event.preventDefault()
- イベントをキャンセルします (キャンセル可能な場合のみ)。
Event.stopImmediatePropagation()
- この特定のイベントのために、他のいかなるリスナーも呼び出されません。同じ要素に付けられたリスナーも、後で横断される(たとえばキャプチャー段階の) 要素に付けられたリスナーも呼び出されません。
Event.stopPropagation()
- これ以上イベントが 伝播 (propagation) するのを停止します。
廃止されたメソッド
Event.getPreventDefault()
- 標準外です。
Event.defaultPrevented
の値を返します。代わりにEvent.defaultPrevented
を使用してください。 Event.preventBubble()
Gecko 24 で廃止- イベントが 浮上 (bubble up) しないようにします。廃止されたので、代わりに
event.stopPropagation
を使ってください。 Event.preventCapture()
Gecko 24 で廃止- 廃止されたので、
event.stopPropagation
を使ってください。
仕様書
仕様書 | 状態 | 備考 |
---|---|---|
DOM CustomEvent の定義 |
現行の標準 | 初回定義 |
ブラウザーの互換性
BCD tables only load in the browser
特権を持つコードから持たないコードへのイベント発行
CustomEvent
を特権を持つコード (つまり、エクステンション) から持たないコード (つまり、ウェブページ) へ発行する時、セキュリティの問題を考慮すべきです。Firefox と他の Gecko アプリケーションは、自動的にセキュリティホールを防ぐ為、他者から直接利用される1つのコンテキスト内で作られるオブジェクトを制限します。しかし、この制限によりコードが期待した通りに動作しない可能性があります。
CustomEvent
オブジェクトが作られている間、同じ window からオブジェクトを作る必要があります。作られた CustomEvent
の detail
属性は同じ制限の影響を受けるでしょう。制限のないコンテンツからは String
と Array
の値は読み込み可能ですが、カスタム Object
は読み込めません。カスタムオブジェクトを使用している間、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 特権でコンテンツスクリプトの実行を許可することになり、脆弱性となる可能性があることを覚えておく必要があります。