検索

このインターフェイスは、EventListeners インターフェイスを EventTarget にバインドまたはバインド解除するための「addEventListener」および「removeEventListener」メソッドを提供します。

DOM 2 Events は、イベント コンテキスト情報を提供する Event インターフェイスを定義し、いくつかの標準プロパティとメソッドを提供します。 Event インターフェイスを実装するオブジェクトは通常、最初のパラメーターとしてイベント処理関数に渡され、現在のイベントに関連する情報を提供します。

イベント登録
DOM 2 イベントの説明によると、ノードは「addEventListener」および「removeEventListener」メソッドを使用してイベント リスナーのバインドおよびバインド解除を行いますが、IE6 IE7 IE8 はこれら 2 つのメソッドをサポートしていません。 'attachEvent' メソッドと 'detachEvent' メソッドを代替として使用します。Opera は両方のメソッドをサポートします。 Chrome Safari Firefox は標準の方法のみをサポートします。

ブラウザの互換性の問題を解決するために、機能をカスタマイズして解決できます。例:

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

var EventUtil = {
addHandler: function (element, type, handler) {
if (element.addEventListener) {
element.addEventListener(type, handler, false) {
} else if (element.attachEvent); >element.attachEvent ("on" タイプ, ハンドラー);
} else {
element["on" type] = ハンドラー;
}
},
removeHandler: function (要素, type, handler) {
if (element.removeEventListener) {
element.removeEventListener(type, handler, false);
} else if (element.detachEvent) {
element.detachEvent("on " type, handler );
} else {
element["on" type] = null;
}
}
};


「addEventListener」について 「attachEvent」には注意すべき点がいくつかあります。

IE はキャプチャ フェーズでのイベント リスナーのトリガーをサポートしていません。また、「attachEvent」メソッドはイベントに応答するかどうかを示すパラメーターを提供しません。
'addEventListener' と 'attachEvent' は複数のイベント リスナーを登録できます。
Firefox Chrome Safari Opera で同じイベント リスナーを複数回登録すると、重複した登録は破棄されます。
同じ要素に複数のイベントリスナーが登録されている場合、IE6 IE7 ではイベントリスナーの実行順序はランダム、IE8 では逆になります。 、および Firefox Chrome Safari Opera はシーケンシャルです。
要素によって登録されたイベント リスナーに不正なイベント リスナー (非関数) がある場合、IE Firefox では例外がスローされますが、Chrome Safari Opera では不正なイベント リスナーが発生します。イベント リスナーは無視され、他のイベント リスナーの実行は続行されます。
イベント オブジェクト
IE では、イベント オブジェクトはグローバル変数として保存および維持されます。 すべてのブラウザ イベントは、ユーザーによってトリガーされたか、他のイベントによってトリガーされたかに関係なく、window.event オブジェクトを更新します。 したがって、コードでは、window.event を呼び出すだけでイベント オブジェクトを簡単に取得でき、その後、event.srcElement を使用して、さらなる処理のためにイベントをトリガーした要素を取得できます。

標準の DOM 処理の場合、イベント オブジェクトはグローバル オブジェクトではなく、オンサイトで発生し、対応するイベント処理関数に自動的に渡されます。 コードでは、関数の最初のパラメータはイベント オブジェクトです。

互換性の問題を解決するには、通常、コード内で次のように処理されます:

コードをコピーコードは次のとおりです。
関数ハンドラー(e){
e = e ||
}


イベント登録にを使用する場合、イベント処理メソッドではイベントオブジェクトを取得できないことに注意してください。標準的な方法。

その理由は、onclick="foo()" が foo() 関数に渡されるパラメーターを持たないためです。

この問題を解決するには 2 つの方法があります。

まず、登録メソッドを に変更します。ここでのイベントは正式なパラメータではないことに注意してください。は実際のパラメータであり、event という名前を付ける必要があります。このようにして、foo 関数はイベント パラメータを取得できます。

2 番目に、登録されたコードを変更せず、イベント処理メソッドで処理します。重要なのは、この時点でイベント オブジェクトが実際に存在することですが、foo 関数を呼び出す関数が見つかることは問題ではありません。 foo.caller.Function を通じて foo 関数の現在の呼び出しを取得できます。この関数の最初のパラメータはイベント オブジェクトなので、次のようにイベント オブジェクトを取得できます。 foo.caller.arguments[0]。

注:

attachEvent メソッドを使用してイベント リスナーを登録する場合にのみ、IE はイベント リスナーによって渡された最初のパラメーターをイベント オブジェクトとして使用することをサポートします。
Firefox はイベント オブジェクトを取得する標準的な方法のみをサポートします。
イベント オブジェクトの属性
IE では、イベント オブジェクトの標準の属性とメソッドのサポートが制限されていますが、Firefox、Chrome、Safari Opera、完全なサポートに加えて、イベント オブジェクトの標準プロパティとメソッドに加えて、IE が提供する非標準の代替手段もさまざまな程度でサポートします。

標準に対応する非標準のメソッドやプロパティを特性で判断して使用する

target srcElement

preventDefault() returnValue

stopPropagation() cancelBubble

relationshipTarget fromElement toElement

例:

コードをコピー コードは次のとおりです。
getEvent: 関数 (イベント) {
イベントを返す : window.event;
},
getTarget: 関数 (イベント) {
イベントを返す|| イベント.srcElement;
},
preventDefault: 関数 (イベント) {
if (event.preventDefault) {
event.preventDefault(); else {
イベント.returnValue = false;
}
},
stopPropagation: function (event) {
if (event.stopPropagation) {
event.stopPropagation(); else {
event.cancelBubble = true ;
}
}



参照:


SD9011: イベント モデルはブラウザごとに異なります

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
JavaScript:Web言語の汎用性の調査JavaScript:Web言語の汎用性の調査Apr 11, 2025 am 12:01 AM

JavaScriptは、現代のWeb開発のコア言語であり、その多様性と柔軟性に広く使用されています。 1)フロントエンド開発:DOM操作と最新のフレームワーク(React、Vue.JS、Angularなど)を通じて、動的なWebページとシングルページアプリケーションを構築します。 2)サーバー側の開発:node.jsは、非ブロッキングI/Oモデルを使用して、高い並行性とリアルタイムアプリケーションを処理します。 3)モバイルおよびデスクトップアプリケーション開発:クロスプラットフォーム開発は、反応および電子を通じて実現され、開発効率を向上させます。

JavaScriptの進化:現在の傾向と将来の見通しJavaScriptの進化:現在の傾向と将来の見通しApr 10, 2025 am 09:33 AM

JavaScriptの最新トレンドには、TypeScriptの台頭、最新のフレームワークとライブラリの人気、WebAssemblyの適用が含まれます。将来の見通しは、より強力なタイプシステム、サーバー側のJavaScriptの開発、人工知能と機械学習の拡大、およびIoTおよびEDGEコンピューティングの可能性をカバーしています。

javascriptの分解:それが何をするのか、なぜそれが重要なのかjavascriptの分解:それが何をするのか、なぜそれが重要なのかApr 09, 2025 am 12:07 AM

JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。

pythonまたはjavascriptの方がいいですか?pythonまたはjavascriptの方がいいですか?Apr 06, 2025 am 12:14 AM

Pythonはデータサイエンスや機械学習により適していますが、JavaScriptはフロントエンドとフルスタックの開発により適しています。 1. Pythonは、簡潔な構文とリッチライブラリエコシステムで知られており、データ分析とWeb開発に適しています。 2。JavaScriptは、フロントエンド開発の中核です。 node.jsはサーバー側のプログラミングをサポートしており、フルスタック開発に適しています。

JavaScriptをインストールするにはどうすればよいですか?JavaScriptをインストールするにはどうすればよいですか?Apr 05, 2025 am 12:16 AM

JavaScriptは、最新のブラウザにすでに組み込まれているため、インストールを必要としません。開始するには、テキストエディターとブラウザのみが必要です。 1)ブラウザ環境では、タグを介してHTMLファイルを埋め込んで実行します。 2)node.js環境では、node.jsをダウンロードしてインストールした後、コマンドラインを介してJavaScriptファイルを実行します。

クォーツでタスクが開始される前に通知を送信する方法は?クォーツでタスクが開始される前に通知を送信する方法は?Apr 04, 2025 pm 09:24 PM

Quartzタイマーを使用してタスクをスケジュールする場合、Quartzでタスク通知を事前に送信する方法、タスクの実行時間はCron式によって設定されます。今...

JavaScriptでは、コンストラクターのプロトタイプチェーンで関数のパラメーターを取得する方法は?JavaScriptでは、コンストラクターのプロトタイプチェーンで関数のパラメーターを取得する方法は?Apr 04, 2025 pm 09:21 PM

JavaScriptプログラミング、プロトタイプチェーンの関数パラメーターの理解と操作のJavaScriptのプロトタイプチェーンの関数のパラメーターを取得する方法は、一般的で重要なタスクです...

WeChat MiniプログラムWebViewでVUE.JSダイナミックスタイルの変位が失敗した理由は何ですか?WeChat MiniプログラムWebViewでVUE.JSダイナミックスタイルの変位が失敗した理由は何ですか?Apr 04, 2025 pm 09:18 PM

WeChatアプレットWeb-ViewでVue.jsを使用する動的スタイルの変位障害がvue.jsを使用している理由の分析...

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール