DOM_DOM でのイベント処理の概要

May 16, 2016 pm 05:56 PM
イベント処理

このインターフェイスは、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 までご連絡ください。

ホット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衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Python GUI プログラミング: インタラクティブなインターフェイスを素早く簡単に作成できます。 Python GUI プログラミング: インタラクティブなインターフェイスを素早く簡単に作成できます。 Feb 19, 2024 pm 01:24 PM

Python GUIプログラミングの簡単な紹介 GUI (Graphical User Interface、グラフィカル ユーザー インターフェイス) は、ユーザーがコンピュータとグラフィカルに対話できるようにする方法です。 GUI プログラミングとは、プログラミング言語を使用してグラフィカル ユーザー インターフェイスを作成することを指します。 Python は、豊富な GUI ライブラリを提供する人気のプログラミング言語であり、Python GUI プログラミングを非常に簡単にします。 Python GUI ライブラリの概要 Python には多くの GUI ライブラリがあり、最も一般的に使用されるものは次のとおりです: Tkinter: Tkinter は、Python 標準ライブラリに付属する GUI ライブラリで、シンプルで使いやすいですが、機能が限られています。 PyQt: PyQt は、強力な機能を備えたクロスプラットフォーム GUI ライブラリです。

C++ でイベントの完全な循環キューを管理するにはどうすればよいですか? C++ でイベントの完全な循環キューを管理するにはどうすればよいですか? Sep 04, 2023 pm 06:41 PM

はじめに CircularQueue は線形キューを改良したもので、線形キューのメモリ浪費の問題を解決するために導入されました。循環キューは、FIFO 原理を使用して要素を挿入および削除します。このチュートリアルでは、循環キューの操作とその管理方法について説明します。循環キューとは何ですか?循環キューは、フロントエンドとバックエンドが相互に接続されたデータ構造の別のタイプのキューです。循環バッファとも呼ばれます。これは線形キューと同様に動作しますが、なぜデータ構造に新しいキューを導入する必要があるのでしょうか?線形キューを使用する場合、キューがその上限に達すると、末尾ポインターの前にいくらかのメモリ領域が存在する可能性があります。これによりメモリの損失が発生するため、優れたアルゴリズムではリソースを最大限に活用できる必要があります。メモリの無駄を解決するには

PHP8.0のイベント処理ライブラリ:イベント PHP8.0のイベント処理ライブラリ:イベント May 14, 2023 pm 05:40 PM

PHP8.0 のイベント処理ライブラリ: Event インターネットの継続的な発展に伴い、PHP は人気のバックエンド プログラミング言語として、さまざまな Web アプリケーションの開発に広く使用されています。このプロセスでは、イベント駆動のメカニズムが非常に重要な部分になっています。 PHP8.0 のイベント処理ライブラリ Event は、より効率的で柔軟なイベント処理メソッドを提供します。イベント処理とは何ですか? イベント処理は、Web アプリケーションの開発において非常に重要な概念です。イベントは任意の種類のユーザー行にすることができます

バブリングイベントの意味は何ですか バブリングイベントの意味は何ですか Feb 19, 2024 am 11:53 AM

バブリング イベントとは、Web 開発において、要素でイベントがトリガーされると、イベントがドキュメント ルート要素に到達するまで上位の要素に伝播することを意味します。この伝播方法は、泡が下から徐々に上昇していくようなものであるため、バブリングイベントと呼ばれます。実際の開発では、イベントを正しく処理するために、バブリング イベントがどのように機能するかを知り、理解することが非常に重要です。以下では、バブリングイベントの概念と使用法を、具体的なコード例を通して詳しく紹介します。まず、親要素と 3 つの子要素を持つ単純な HTML ページを作成します。

$listeners を使用して Vue でイベント処理関数を渡す $listeners を使用して Vue でイベント処理関数を渡す Jun 11, 2023 pm 03:09 PM

Vue では、多くの場合、ネストされたコンポーネントがいくつかあり、これらのネストされたコンポーネント間でイベントを渡す必要があります。 Vue では、$emit イベントはコンポーネント間のイベント通信に使用されます。ただし、場合によっては、親コンポーネントのイベント ハンドラーをネストされた子コンポーネントに渡す必要がある場合、$emit イベントの使用は適切ではありません。このとき、Vue が提供する $listeners を使用してイベント処理関数を渡すことができます。それで、$listener とは何ですか?

Vue の v-on ディレクティブの分析: フォーム送信イベントの処理方法 Vue の v-on ディレクティブの分析: フォーム送信イベントの処理方法 Sep 15, 2023 am 09:12 AM

Vue の v-on ディレクティブの分析: フォーム送信イベントの処理方法 Vue.js では、v-on ディレクティブはイベント リスナーをバインドするために使用され、さまざまな DOM イベントをキャプチャして処理できます。その中でも、フォーム送信イベントの処理は Vue の一般的な操作の 1 つです。この記事では、v-on ディレクティブを使用してフォーム送信イベントを処理する方法を紹介し、具体的なコード例を示します。まず、Vue のフォーム送信イベントとは、ユーザーが送信ボタンをクリックするか Enter キーを押したときにトリガーされるイベントを指すことを明確にする必要があります。 Vue では、次のように渡すことができます。

イベントバブリングの実践的な応用と適用可能なイベントタイプ イベントバブリングの実践的な応用と適用可能なイベントタイプ Feb 18, 2024 pm 04:19 PM

イベント バブリングのアプリケーション シナリオと、それがサポートするイベントの種類 イベント バブリングとは、要素上のイベントがトリガーされると、イベントがその要素の親要素に渡され、その後要素の祖先要素に渡されることを意味します。ドキュメントのルート ノードに渡されます。これはイベント モデルの重要なメカニズムであり、幅広い応用シナリオがあります。この記事では、イベント バブリングのアプリケーション シナリオを紹介し、イベント バブリングがサポートするイベントの種類について説明します。 1. アプリケーション シナリオ イベント バブリングには、Web 開発における幅広いアプリケーション シナリオがあります。ここでは、一般的なアプリケーション シナリオをいくつか紹介します。フォーム内でのフォーム検証

ブレインマップ機能におけるPHPとVueのキーコード実装の徹底研究 ブレインマップ機能におけるPHPとVueのキーコード実装の徹底研究 Aug 27, 2023 pm 12:15 PM

ブレイン マップ機能における PHP と Vue のキー コード実装の詳細な検討 概要: この記事では、マインド マップ機能の実現における PHP と Vue のキー コード実装について詳しく説明します。ブレイン マッピングは、思考構造や関係性を表示するために一般的に使用されるグラフィカル ツールで、プロジェクト計画、知識管理、情報整理などの分野で広く使用されています。 PHP と Vue の関連知識を学ぶことで、シンプルかつ強力な脳マッピング アプリケーションを実装できます。 PHPPHP は一般的に使用されるサーバー側スクリプト言語であることを理解します。習得が簡単で拡張性が高い

See all articles