JS でよく使用されるイベントは次の通りです。
では、JS の「イベント オブジェクト」とは一体何でしょうか? まず、イベントとは何でしょうか?まず、JS はいくつかの動的な操作を実装するために使用され、ユーザーはフォームの送信、マウスのクリックなどの機能を実装したい場合があり、そのためにはブラウザーでこのイベントをトリガーする必要があります。次に、ブラウザーはユーザーの行動を認識 (またはキャプチャ) し、イベントに応答して処理します。これをイベントと呼びます。 では、イベント オブジェクトを生成する理由は何でしょうか?ほとんどの場合、イベントのトリガーはユーザーが実行したいアクションです。つまり、ユーザーがいつイベントをトリガーするかはわかりません。さらに、イベントの伝播メカニズムにより、どのノードでイベントがトリガーされるかさえわかりません。これは頭の痛い問題です。 この問題を解決するために、イベントが発生した後、システムはそれを解決するために作成したイベント ハンドラー (コード) を呼び出します。 すると、イベント オブジェクトとは何かという疑問が生じます。ハンドラを呼び出すと、システムはイベントに関するすべての情報をオブジェクトにカプセル化し、それをパラメータとしてリスニング関数 (イベント ハンドラ) に渡します。したがって、このオブジェクトはイベント オブジェクトと呼ばれます。 イベントの種類に応じて、イベント オブジェクトに含まれる情報も異なります。たとえば、クリック イベントの場合は、マウス クリックの水平座標と垂直座標が含まれ、キーボード イベントの場合は、キーボード キーの値などが含まれます。 <本文> <div id="div"> <p>ppp</p> </div> <入力タイプ="テキスト" 値="" id="i"> </本文> <スクリプト> var d = document.getElementById('div'); //マウスイベント d.addEventListener('click',function(e){ コンソールログ(e); }); var i = document.getElementById('i'); //キーボードイベント i.addEventListener('keydown',k); 関数k(e){ コンソールログ(e); } </スクリプト> イベント オブジェクトの意味がわかったので、イベント オブジェクトのプロパティとメソッドを見てみましょう。 (1)一般的な属性: event.bubbles: 現在のイベントがバブルするかどうかを示すブール値を返します。 event.eventPhase: 伝播フェーズにおけるイベントストリームの位置を示す整数値を返します。
event.type: 大文字と小文字を区別してイベント タイプを示す文字列を返します。 event.timeStamp: イベントが発生した時刻を示すミリ秒のタイムスタンプを返します。 clientX、clientY: マウスイベントのX、Y座標を取得します。 イベントオブジェクト (2)イベントプロキシ/デリゲートプロパティ: event.target: イベント トリガーへの参照。トリガー イベントが発生したノードを返します。 (ポイント) event.currentTarget: イベントが現在配置されているノード、つまり実行中のリスニング関数がバインドされているノードを返します。 (ただ理解するだけ) var d = document.getElementById('d'); d.onclick = 関数(e){ //イベントノードを返します console.log(e.currentTarget); //トリガーノードに戻る console.log(e.target); } イベント プロキシ (イベント委任) の意味: イベントはバブリング段階で親ノードに上向きに伝播するため、子ノードのリスニング関数を親ノード上に定義することができ、親ノードのリスニング関数は複数の子要素のイベントを均一に処理します。このメソッドはイベント プロキシと呼ばれ、イベント プロキシまたはイベント委任とも呼ばれます。 <ヘッド> <タイトル></タイトル> <メタ文字セット="UTF-8"> <スタイル> div{パディング: 40px} #div3{幅: 300px;高さ: 300px;境界線: 1px 赤一色;} #div2{幅: 200px;高さ: 200px;境界線: 1px 赤一色;} #div1{幅: 100px;高さ: 100px;境界線: 1px 赤一色} </スタイル> </head> <本文> <div id="div3">div3 <div id="div2">div2 <div id="div1">div1</div> </div> </div> </本文> <スクリプト> var d = document.getElementById('div3'); d.onclick = 関数(e){ e.target.style.background = '赤'; } </スクリプト> 上記のコードによると、3 つの div の位置はおおよそ次のようになります。各 div をクリックすると、div 全体が赤に変わります。主に、e.target はクリックによってトリガーされたノードを返します。 (3) ブラウザのデフォルト動作を防止し、イベントの伝播を防ぐ方法 event.preventDefault(): この方法は、ブラウザが現在のイベントのデフォルト動作を実行しないようにします。たとえば、リンクをクリックするとブラウザは指定されたページにジャンプします。または、スペースバーを押すとページが一定距離下にスクロールします。 event.stopPropagation(): このメソッドは、DOM 構造内でイベントが伝播し続けるのを停止し、他のノードで定義されたリスニング関数のトリガーを防ぎます。 <本文> <div id="div2">2 <div id="div1">1 <a id="a" href="Baidu 2">私の明るい月の匂いはますます嗅ぎたくなる</a> </div> </div> </本文> <スクリプト> var d2 = document.getElementById('div2'); var d1 = document.getElementById('div1'); var a = document.getElementById('a'); d2.onclick = 関数(e){ アラート('d2'); } d1.onclick = 関数(e){ アラート('d1'); } a.onclick = 関数(e){ //イベントの伝播を停止します e.stopPropagation(); 警告('a'); //ブラウザのデフォルトの動作を防止する e.preventDefault(); } </スクリプト> イベント オブジェクトを使用して、簡単な例を実装します。マウスに追従する div (イベント オブジェクトの XY 値を変更することによって) <本文> <div id="div2">2 <div id="div1">1 <a id="a" href="Baidu 2">私の明るい月の匂いはますます嗅ぎたくなる</a> </div> </div> </本文> <スクリプト> var d2 = document.getElementById('div2'); var d1 = document.getElementById('div1'); var a = document.getElementById('a'); d2.onclick = 関数(e){ アラート('d2'); } d1.onclick = 関数(e){ アラート('d1'); } a.onclick = 関数(e){ //イベントの伝播を停止します e.stopPropagation(); 警告('a'); //ブラウザのデフォルトの動作を防止する e.preventDefault(); } </スクリプト> クリック前(動きなし) クリック後(マウスに従う) 要約するjs のイベント オブジェクトに関するこの記事はこれで終わりです。より関連性の高い js イベント オブジェクトについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: Linux centos7 環境での MySQL インストール チュートリアル
>>: Linux カーネルの探究: Kconfig の秘密
目次ファイルアップロードのための2つのソリューションファイルストリーム(フォームデータ)に基づくクラ...
どのような製品について言及したいですか?最近、ユーザーがマーケティングの変化をよりよく観察できるよう...
まずディレクトリを作成する cd /etc/nginx mkdir ssl cd ssl CA と自...
純粋な CSS3 で実装された美しい入力ボックス アニメーション スタイル ライブラリを共有します ...
Firefox、Opera、その他のブラウザは Webdings フォントをサポートしていません。回...
このロゴを .rar ファイルとしてローカルに保存し、解凍して効果を確認することができます。よりシン...
1. まず、インタラクティブに使用するための .json ファイルを作成します。json データ形式...
操作前に必ずお読みください:注意:管理に rancher を使用する場合は、k8s クラスターが構築...
目次問題の説明方法 1 (バックエンドが画像 URL を返す)方法 2 (フロントエンドで requ...
例えば:コードをコピーコードは次のとおりです。 <html> <ヘッド> &...
この記事では、カレンダー機能を実装するためのVue.jsの具体的なコードを例として紹介します。具体的...
<br />注:ウェブサイトの種類を示すものを除くすべてのテキストは、企業サイト用です。...
インターネット上には Linux サーバーを監視するためのツール、コンポーネント、プログラムが多数あ...
特定のインターフェースをリクエストするときに、指定されたテキスト文字列または JSON 文字列を返す...
目次1. はじめに2. データを消去するいくつかの方法2.1 ref() の使用2.2 スライスの使...