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 の秘密
目次序文1. Dockerをインストールする2. Dapr CLIをインストールする3. Net6 ...
新しい接続を作成する側がクライアントに相当し、接続される側がサーバーに相当します。手順は次のとおりで...
前回のブログ投稿では、レジストリのプライベート ウェアハウスについて説明しました。今日は、Harbo...
目次歴史pushState() メソッドpushState() の使用シナリオreplaceStat...
任意のテキスト エディターを開き、次のコードをコピーして、たとえば SomeFilename.htm...
まず、MySQL とは何かを簡単に紹介します。簡単に言えば、データベースはデータを格納するための倉庫...
ビジネス シナリオ: vue + element ui の el-dialog を使用します。ポップ...
目次需要背景思考分析UI 表示始める1. 支払いコンポーネントテンプレートを作成する2. 支払いコン...
Linux 上の LibreOffice で Microsoft ドキュメントを開くと、フォントが少...
序文ファイルのコピーによってハードドライブのスペースが大量に浪費され、ファイルを更新するときに混乱が...
1. 前提条件インポートには require.context メソッドを使用します。vite で作成...
1. 分割スクリプト (splitNginxLog.sh) を作成します。 * この例では、ログ分割...
私は最近、ユーザー操作を元に戻す、またはやり直す機能を備えたビジュアル操作プラットフォームを開発して...
目次序文1. オブジェクト.freeze() 2. オブジェクト.seal() 3. オブジェクト....
この記事では、Jingdongの詳細ページの画像の拡大を実現するためのjsの具体的なコードを紹介しま...