ホームページ ウェブフロントエンド jsチュートリアル JavaScript学習メモ(5) イベントフローとイベント処理の関数割り当て

JavaScript学習メモ(5) イベントフローとイベント処理の関数割り当て

Dec 19, 2016 pm 05:35 PM

如果你在页面上做一次点击例如点击一个按钮,那么你是首先点击了该按钮然后动作传入了按钮的容器,最后传入整个页面Document还是首先点击了页面Document,然后是按钮的容器,最后导致按钮的点击呢?
  javaScript对这种问题的处理方式可以称之为事件流即事件的传播机制。对于事件流IE跟FF有不同的解释。IE下的解决方案称之为:冒泡型事件,而FF下称之为:捕获型事件。顾名思义冒泡型事件是从低而上的触发机制,而捕获型事件则是从上到下的触发机制。《Javascript高级程序设计》一书提到:
    DOM事件流同时支持两种事件触发机制,但是捕获型事件先发生。注意因为事件的目标(也就是DOM树最深的节点)是最精确的元素,实际上它会连续接收两次事件,一次是在捕获过程中,一次是在冒泡过程中。事情到底是不是这样呢?观察下面的程序:

 
    JAVASCRIPT事件流
   
   
 
 
   

click me!



IE: Click click me 実行シーケンスは次のとおりです: DIV-->BODY-->HTML ページの他の部分をクリックします: BODY-->HTML
FF : Click click me 実行シーケンスは次のとおりです: DIV-->HTML-->BODY ページの他の部分をクリック: HTML-->BODY
はは、本で言われていることとは違うようですね!プログラムの実行結果からわかることは、IE または Firefox のどちらの場合でも、イベントは常に最も正確な要素 (つまり、DOM ツリーの最も深いノード) によって最初にトリガーされ、次に IE および FireFox でバブリングを開始するということです。 。 捕獲。

JavaScript では、イベント処理関数を割り当てる 3 つの方法が提供されています。最初の方法は、上記のプログラムと同様、HTML コードでイベント処理関数を割り当てる方法です。
2 番目の方法は、JavaScript でイベント処理関数を割り当てる方法です。このメソッドでは、まずイベント処理関数が割り当てられる要素への参照を取得する必要があります。次のプログラムを参照してください。
1 window.onload = function () { bar odiv = document.getElementById( "contentDiv");
3odiv.onclick = function(){alert(odiv。-要素への参照が取得されたことが保証されているため、このプログラムはオンクリックイベントを配置しますonload イベント内で oDiv を定義しないと、oDiv が定義されていないことが報告されます。もう 1 つの注意点は、このイベント処理関数の割り当て方法を使用する場合、特定のイベントに割り当てられる関数は 1 つだけであり、イベント関数の署名は小文字である必要があります。そうしないと、以前に割り当てられた関数が後の関数によって上書きされます。同じイベントに複数の処理機能を割り当てる場合は、3 番目のイベント処理機能の割り当て方法を使用する必要があります。
IE では、obj.attachEvent() メソッドを使用して要素に関数を割り当て、obj.detachEvent() メソッドを使用して要素のイベント処理関数をデタッチしますが、DOM (例として FireFox を取ります) では、 addEventListener() メソッドを使用して関数を割り当て、removeEventListener() メソッドを使用して関数を切り離します。 alert(odiv.innerhtml);
5}
6 var func2 = function(){
if(odiv.attachevent){
11odiv.attachevent( "onclick"、func1); "onclick",func2);
13 //oDiv.detachEvent("onclick",func1);
14 } else if(oDiv.addEventListener){
15 //FireFox
16 //FireFox addEventListener("click",func1 ,true);
17 oDiv.addEventListener("click",func2,true);
18 //oDiv.removeEventListener("click",func1,true);
19 }
20
21 } これの違いを説明しましょうIE および FireFox でのイベント処理関数:
1. 関数の最初のパラメーターには、IE ではプレフィックスとして「on」が必要ですが、FF では不要です。 次の処理関数の署名は小文字である必要があります。
2. FireFox の addEventListener() 関数の 3 番目のパラメータは次のことを表します。 true はキャプチャ フェーズでイベント処理関数を追加することを意味し、false はバブリング フェーズでイベント処理関数を追加することを意味します。ただし、FireFox はバブリング イベント ストリームをサポートしていないため、ここではTrueにしてもFalseにしても違いはないようです。ただし、注意すべき点が 1 つあります。addEventListener() の 3 番目のパラメーターが true に設定されている場合、removeEventListener() メソッドの 3 番目のパラメーターも同じ値に設定する必要があります。そうしないと、メソッドは失敗します。
3. 実行フェーズでは、IE は最後に追加されたイベント処理関数を最初に実行し、次に最後から 2 番目のイベント処理関数を実行します。ただし、FireFox では、IE とは逆に、イベント処理関数が次の順序で実行されます。実装されます。

上記はイベントフローとイベント処理の関数割り当ての内容です。その他の関連内容については、PHP 中国語 Web サイト (www.php.cn) をご覧ください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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 ページを作成します。

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 では、次のように渡すことができます。

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

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

イベントバブリングの実践的な応用と適用可能なイベントタイプ イベントバブリングの実践的な応用と適用可能なイベントタイプ 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