js dom元素事件處理簡單介紹
本章節比較綜合的介紹一下javascript中中dom事件的相關知識,需要的朋友可以做一下參考。
一.事件流:
(1).事件冒泡:事件最開始由最具體的元素接收,然後逐漸冒泡上升到最外層父元素。
(2).事件捕獲:最外層的節點更早接收到事件,而最具體的節點最後接收到事件。
二.事件處理程式:
(1).HTML事件處理程式:
缺點:HTML和JS程式碼緊密的耦合在一起。
程式碼如下:
[HTML] 純文字檢視 複製程式碼<input type="button" value="按鈕" onclick="showMessage()">
(2).DOM0級事件處理程式:
較傳統的方式:把一個函式賦值給一個事件的處理程式屬性,用的比較多。
優點:簡單/跨瀏覽器。
[HTML] 純文字檢視 複製程式碼<input type="button" value="按鈕" id="btn2"> <script> var btn2 = document.getElementById('btn2'); //取得btn2按鈕物件; btn2.onclick = function () { //給btn2新增onclick屬性; alert('這是通過DOM0級新增的事件!'); } btn2.onclick=null;//刪除onclick屬性; </script>
(3).DOM2級事件處理程式:
DOM2級事件定義了兩個方法:用於處理指定和刪除事件處理程式的操作。
addEventListener()和removeEventListner()。
接收三個引數:要處理的事件名/事件處理函式和布林值。
在IE8以下不起作用。
[HTML] 純文字檢視 複製程式碼<input type="button" value="按鈕" id="btn3"> <script> var btn3 = document.getElementById('btn3'); btn3.addEventListener('click',showMessage,false);//新增事件程式; btn3.addEventListener('click',function(){//新增多個事件程式; alert(this.value); },false); btn3.removeEventListener('click',showMessage,false);//刪除事件程式; </script>
(4).IE8和IE8以下事件處理程式及跨瀏覽器:
接收兩個引數:事件處理函式名稱和事件處理函式:
[JavaScript] 純文字檢視 複製程式碼var btn3 = document.getElementById('btn3'); btn3.attachEvent('onclick',showMessage);//新增事件; btn3.detachEvent('onclick',showMessage);//刪除事件;
瀏覽器相容:
[JavaScript] 純文字檢視 複製程式碼//將新增和刪除事件處理程式封裝到物件中並賦值給變數'eventUtil'; var eventUtil = { //新增控制程式碼 addHandler:function(element,type,handler){ //判斷DOM2級事件處理程式; if(element.addEventListener){ element.addEventListener(type,handler,false); //判斷IE瀏覽器; }else if(element.attachEvent){ element.attachEvent("on"+type,handler); //使用DOM0級事件處理程式; }else{ element['on'+type] = handler; } }; //刪除控制程式碼 removeHandler:function(element,type,handler){ //判斷DOM2級事件處理程式; if(element.removeEventListener){ element.removeEventListener(type,handler,false); //判斷IE瀏覽器; }else if(element.detachEvent){ element.detachEvent("on"+type,handler); //使用DOM0級事件處理程式; }else{ element['on'+type] = null; }; }; }; //跨瀏覽器新增事件處理程式; eventUtil.addHandler(btn3,'click',showMessage);
三.事件物件:
(1).DOM中的事件物件:
在觸發DOM上的事件時都會產生一個物件==event。
1.type == 獲取事件型別。
2.target == 獲取事件目標。
3.stopPropagation() == 停止事件冒泡。
4.preventDefault() == 阻止事件的預設行為。
[JavaScript] 純文字檢視 複製程式碼function showMes(event){ alert(event.type);//onclick;點選事件; alert(event.target.nodeName); //INPUT;input按鈕被觸發; event.stopPropagation();//停止事件冒泡; } <a href="event.html" onclick="stopGoto();">跳轉</a> function stopGoto(event){ event.preventDefault();//阻止預設行為; }
(2).低版本IE中的事件物件:
1.type == 同上。
2.srcElement屬性 == 獲取事件目標。
3.cancleBubble屬性 == 阻止冒泡;設定true表示阻止冒泡,false為不組織冒泡。
4.returnValue屬性 == 用於阻止事件的預設行為。
[JavaScript] 純文字檢視 複製程式碼function showMes(event){ //非IE用event,IE8以下用window.event; event = event || window.event; //事件目標相容; var ele = event.target || event.srcElement; //相容阻止事件冒泡; if(event.stopPropagation){ event.stopPropagation(); }else{ event.cancleBubble(); }; //相容取消事件預設行為; if(event.preventDefault){ event.preventDefault(); }else{ event.returnValue = false; } }
相關文章
- 原生js的常用dom元素操簡單介紹JS
- JavaScript複製dom元素簡單介紹JavaScript
- 原生javascript獲取dom元素簡單介紹JavaScript
- javascript DOM元素節點操作簡單介紹JavaScript
- javascript事件處理函式繫結簡單介紹JavaScript事件函式
- jQuery dom元素層級匹配選擇器簡單介紹jQuery
- js事件委託原理簡單介紹JS事件
- <svg>元素簡單介紹SVG
- DOM事件簡介事件
- javascript刪除註冊的事件處理函式簡單介紹JavaScript事件函式
- javascript事件處理函式迴圈批量繫結簡單介紹JavaScript事件函式
- js設定元素background-position簡單介紹JS
- js獲取元素的樣式值簡單介紹JS
- js的表單元素的defaultValue預設值簡單介紹JS
- onerror事件用法簡單介紹Error事件
- invalid事件簡單介紹事件
- onreadystatechange事件簡單介紹事件
- JSON簡單介紹JSON
- nodejs簡單介紹NodeJS
- jQuery阻止事件冒泡簡單介紹jQuery事件
- jQuery自定義事件簡單介紹jQuery事件
- Query鍵盤事件簡單介紹事件
- 事件冒泡、事件捕獲、DOM0級事件處理程式、DOM2級事件處理程式事件
- 簡單介紹Python中異常處理用法Python
- js dom元素樣式設定相關style屬性介紹JS
- js和jQuery獲取視窗和元素尺寸簡單介紹JSjQuery
- form表單的onSubmit事件簡單介紹ORMMIT事件
- jQuery物件轉換為dom物件簡單介紹jQuery物件
- JSON物件簡單介紹JSON物件
- js WebSocket用法簡單介紹JSWeb
- 可以被提交的表單元素簡單介紹
- jQuery滑鼠雙擊事件簡單介紹jQuery事件
- window.onunload事件簡單介紹事件
- java關於事件的簡單介紹Java事件
- 簡單介紹Python 處理錯誤的原則Python
- 事件流處理 (ESP) 與 Kafka 簡介事件Kafka
- JS滑鼠事件完成元素拖拽(簡單-高階)JS事件
- javascript操作html元素屬性簡單介紹JavaScriptHTML