ホームページ > 記事 > ウェブフロントエンド > JSネイティブイベント記述の詳細な分析(コードが添付されており、シンプルかつ明確)
以下は私がまとめた JS ネイティブ イベントです。興味のある学生はご覧ください。
1. イベントフロー
イベントフローは主にイベントバブリングとイベントキャプチャの2種類に分かれます。イベントがバブルアップし、ターゲット要素が最初にイベントを受信し、次に徐々に上方に向かって、あまり具体的でないノードに伝播します。イベント キャプチャはまったく逆で、主な考え方は、特定性の低いノードが最初にイベントを受信し、その後徐々にターゲット ノードに伝播するというものです。
div がクリックされると、バブリング イベントはノードの順序 div->body->html->document を受け取ります
キャプチャ イベントはノードの順序 document->html->body->div を受け取ります
2. イベント ハンドラー
a) HTML イベント ハンドラー
要素によってサポートされる各イベントは、対応するイベント ハンドラーと同じ名前の HTML 属性を使用して指定できます。
短所: 1. 時差の問題。ブラウザがクリック イベント関数を解析する前にユーザーがページ要素をクリックした可能性があります。try-catch を通じてエラーをラップします。
2. イベント ハンドラーのスコープ チェーンはブラウザによって異なります。異なる結果につながります。
3. HTML コードと Javascript コードは密接に結合されているため、拡張やメンテナンスには役立ちません。
b) DOM0 レベルのイベント ハンドラー
要素のイベント ハンドラー属性に関数を割り当てます
var btn = document.getElementById(“#dv”);
btn.onclick = function(){};要素 Handler –btn.onclicn = null;
イベント ハンドラーを指定します addEventListener
イベント ハンドラーを削除します RemoveEventListener
3 つのパラメーター、つまり、処理されるイベント名、イベント ハンドラーの関数、およびブール値を受け取ります (true はハンドラーが呼び出されることを示します)キャプチャ フェーズ中、false はバブリング フェーズ中にイベント ハンドラーが呼び出されることを意味します)
d)IE事件处理程序
attachEvent
detachEvent
两个方法接收相同的两个参数(”onclick”,”function(){}”);
由于IE8级更早版本只支持事件冒泡,所以通过attachEvent添加的事件处理程序只能被添加到冒泡阶段。
注意:attach中第一个参数是onclick而不是addEventListener中的click
IE事件处理程序attachEvent添加的在全局作用域中运行
var btn = document.getElementById(“#tes”); btn.attachEvent(“onclick”,function(){ alert(this == window); //true })
3、跨浏览器的事件处理程序。
由于不同浏览器之间事件处理程序不同,所以有必要编写可以跨浏览器使用的事件处理程序。
上面是我整理给大家的,希望今后会对大家有帮助。
相关文章:
以上がJSネイティブイベント記述の詳細な分析(コードが添付されており、シンプルかつ明確)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。