From 33058f2b292b3a581333bdfb21b8f671898c5060 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:40:17 -0500 Subject: initial commit --- files/ja/web/api/eventtarget/index.html | 132 ++++++++++++++++++++++++++++++++ 1 file changed, 132 insertions(+) create mode 100644 files/ja/web/api/eventtarget/index.html (limited to 'files/ja/web/api/eventtarget/index.html') diff --git a/files/ja/web/api/eventtarget/index.html b/files/ja/web/api/eventtarget/index.html new file mode 100644 index 0000000000..88542948d3 --- /dev/null +++ b/files/ja/web/api/eventtarget/index.html @@ -0,0 +1,132 @@ +--- +title: EventTarget +slug: Web/API/EventTarget +tags: + - API + - DOM + - DOM Events + - EventTarget + - Interface +translation_of: Web/API/EventTarget +--- +

{{ ApiRef("DOM Events") }}

+ +

EventTarget は、イベントを受け取り、そのためのリスナーを持つ可能性があるオブジェクトにより実装されたインターフェースです。

+ +

{{domxref("Element")}} および {{domxref("document")}}、{{domxref("window")}} は、最も一般的なイベントターゲットですが、他のオブジェクトもイベントターゲットになります。例えば、{{domxref("XMLHttpRequest")}}、{{domxref("AudioNode")}}、{{domxref("AudioContext")}} 他。

+ +

多くのイベントターゲット (要素、document、window を含む) も、on... プロパティや属性を経由した イベントハンドラ の設定をサポートしています。

+ +

{{InheritanceDiagram}}

+ +

コンストラクター

+ +
+
{{domxref("EventTarget.EventTarget()","EventTarget()")}}
+
新しい EventTarget オブジェクトのインスタンスを作成します。
+
+ +

メソッド

+ +
+
{{domxref("EventTarget.addEventListener()")}}
+
EventTarget 上に特定のイベント種別のイベントハンドラを登録します。
+
{{domxref("EventTarget.removeEventListener()")}}
+
EventTarget からイベントリスナーを削除します。
+
{{domxref("EventTarget.dispatchEvent()")}}
+
この EventTarget にイベントを送出します。
+
+ +

Mozilla chrome コード向けの追加メソッド

+ +

on* プロパティを実装するために JavaScript で実装されたイベントターゲットを使用するための Mozilla 拡張があります。WebIDL バインディング も参照してください。

+ + + +

+ +

EventTarget の簡易実装

+ +
var EventTarget = function() {
+  this.listeners = {};
+};
+
+EventTarget.prototype.listeners = null;
+EventTarget.prototype.addEventListener = function(type, callback) {
+  if (!(type in this.listeners)) {
+    this.listeners[type] = [];
+  }
+  this.listeners[type].push(callback);
+};
+
+EventTarget.prototype.removeEventListener = function(type, callback) {
+  if (!(type in this.listeners)) {
+    return;
+  }
+  var stack = this.listeners[type];
+  for (var i = 0, l = stack.length; i < l; i++) {
+    if (stack[i] === callback){
+      stack.splice(i, 1);
+      return;
+    }
+  }
+};
+
+EventTarget.prototype.dispatchEvent = function(event) {
+  if (!(event.type in this.listeners)) {
+    return true;
+  }
+  var stack = this.listeners[event.type].slice();
+
+  for (var i = 0, l = stack.length; i < l; i++) {
+    stack[i].call(this, event);
+  }
+  return !event.defaultPrevented;
+};
+
+ +

仕様

+ + + + + + + + + + + + + + + + + + + + + + + + +
仕様書策定状況備考
{{SpecName('DOM WHATWG', '#interface-eventtarget', 'EventTarget')}}{{Spec2('DOM WHATWG')}}変更なし。
{{SpecName('DOM3 Events', 'DOM3-Events.html#interface-EventTarget', 'EventTarget')}}{{Spec2('DOM3 Events')}}いくつかの引数は任意 (listener)、または null 値を許可 (useCapture)。
{{SpecName('DOM2 Events', 'events.html#Events-EventTarget', 'EventTarget')}}{{Spec2('DOM2 Events')}}初期定義。
+ +

ブラウザーの実装状況

+ +
+ + +

{{Compat("api.EventTarget")}}

+
+ +

関連情報

+ + -- cgit v1.2.3-54-g00ecf