ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScriptでのaddEventListenerの使い方の詳しい説明

JavaScriptでのaddEventListenerの使い方の詳しい説明

黄舟
リリース: 2017-12-04 14:55:52
オリジナル
4843 人が閲覧しました

addEventListener は、イベント処理プログラムを登録するために使用されます。IE では、attachEvent ではなく addEventListener について説明するのはなぜですか?第一に、attachEvent は比較的単純であり、第二に、addEventListener は DOM の標準コンテンツです。今回はJavaScriptにおけるaddEventListenerの使い方を詳しく解説していきます!

(p は js の前に配置する必要があることに注意してください)

一般に、同じイベントを dom オブジェクトにバインドすると、最後のイベントのみが有効になります。例:

コードは次のとおりです。次のようになります:

document.getElementById("btn").onclick = method1; 
document.getElementById("btn").onclick = method2; 
document.getElementById("btn").onclick = method3;
ログイン後にコピー

その場合、method3 のみが有効になります。
Mozilla シリーズの場合は、addEventListener を使用して複数のイベントを順番に実装します。例:

コードは次のとおりです:

var btn1Obj = document.getElementById("btn1"); 
//element.addEventListener(type,listener,useCapture); 
btn1Obj.addEventListener("click",method1,false); 
btn1Obj.addEventListener("click",method2,false); 
btn1Obj.addEventListener("click",method3,false);
ログイン後にコピー

実行順序は、method1->method2->method3 です

の場合IE シリーズでは、attachEvent を使用します。たとえば、複数のイベントを順番に実装できます。

コードは次のとおりです。

var btn1Obj = document.getElementById("btn1"); 
//object.attachEvent(event,function); 
btn1Obj.attachEvent("onclick",method1); 
btn1Obj.attachEvent("onclick",method2); 
btn1Obj.attachEvent("onclick",method3);
ログイン後にコピー

実行順序は、method3->method2->method1 です
======= ========= =======================================
でMozilla:
addEventListener の使用方法

target.addEventListener(type,listener,useCapture);
ログイン後にコピー

ターゲット: ドキュメント ノード、ドキュメント、ウィンドウ、または XMLHttpRequest。
type: 文字列、イベント名。「クリック」、「マウスオーバー」、「キーダウン」などの「オン」を除く。
listener: EventListener インターフェイスまたは JavaScript の関数を実装します。
useCapture: キャプチャを使用するかどうか。通常は false。例:

document.getElementById("testText").addEventListener("keydown", function (event) { alert(event.keyCode); }, false);
ログイン後にコピー

IE の場合:

target.attachEvent(type, listener);
ログイン後にコピー

ターゲット: ドキュメント ノード、ドキュメント、ウィンドウ、または XMLHttpRequest。
type: 文字列、「onclick」、「onmouseover」、「onkeydown」などの「on」を含むイベント名。
listener: EventListener インターフェイスまたは JavaScript の関数を実装します。 例: document.getElementById("txt").attachEvent("onclick",function(event){alert(event.keyCode);});
W3C と IE は、設定を削除するために使用される指定されたイベントの削除もサポートしています。イベントの形式は次のとおりです:

removeEventListener(event,function,capture/bubble);
ログイン後にコピー
ログイン後にコピー

Windows IE の形式は次のとおりです:

detachEvent(event,function);
ログイン後にコピー
ログイン後にコピー

DOM2 の進化:

DOM 0 EventDOM 2 Event
onblur() blur
onfocus()focus
onchange()change
onmouseover()mouseover
マウスアウト()マウスアウト
onmousemove()mousemove
onmousedown()mousedown
onmouseup()mouseup
onclick() click
ondblclick ()dblclick
onkeydown()keydown
onkeyup()keyup
onkeypress()keypress
submit() submit
onload ()ロード
onunload()アンロード


新的DOM2 用法可以addEventListener()这个函数来观察到:

代码如下:

addEventListener(event,function,capture/bubble);
ログイン後にコピー

参数event如上表所示, function是要执行的函数, capture与bubble分别是W3C制定得两种时间模式,简单来说capture就是从document的开始读到最后一行, 再执行事件, 而bubble则是先寻找指定的位置再执行事件.
capture/bubble的参数是布尔值, True表示用capture, False则是bubble.Windows Internet Explorer也有制定一种EventHandler, 是 attachEvent(), 格式如下:

代码如下:

window.attachEvent(”submit”,myFunction());
ログイン後にコピー

比较特别的是attachEvent不需要指定capture/bubble的参数, 因为在windows IE环境下都是使用Bubble的模式.
如何判断是否支持哪种监听呢?如:

代码如下:

if (typeof window.addEventListener != “undefined”) { 
window.addEventListener(”load”,rollover,false); 
} else { 
window.attachEvent(”onload”,rollover) 
}
ログイン後にコピー

上述的 typeof window.addEventListener != “undefined” 程序代码可以判断使用者的浏览器是否支持AddEventListener这个事件模型, 如果不支持就使用attachEvent.
W3C 及 IE 同时支持移除指定的事件, 用途是移除设定的事件, 格式分别如下:
W3C格式:

removeEventListener(event,function,capture/bubble);
ログイン後にコピー
ログイン後にコピー

Windows IE的格式如下:

detachEvent(event,function);
ログイン後にコピー
ログイン後にコピー

总结:

本文通过实例详细介绍了关于JavaScript中addEventListener的使用,相信小伙伴对此也是能够有一定的了解,希望对你的工作有所帮助!

相关推荐:

javascript DOM对象学习之事件流addEventListener()使用教程

关于addEventListener问题

详解addEventListener的三个参数之useCapture

以上がJavaScriptでのaddEventListenerの使い方の詳しい説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート