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; } }
相關文章
- <svg>元素簡單介紹SVG
- 簡單介紹Python中異常處理用法Python
- 簡單介紹Python 處理錯誤的原則Python
- JS滑鼠事件完成元素拖拽(簡單-高階)JS事件
- 事件流處理 (ESP) 與 Kafka 簡介事件Kafka
- SQL Server 2008事件處理系統簡介LSSQLServer事件
- Html 5.2 的簡單介紹及新增元素 <dialog></dialog>HTML
- 簡單介紹js 陣列 fill() 填充方法JS陣列
- js Dom之事件JS事件
- 介紹下VNPY的Event事件處理,和建立新事件型別事件型別
- 簡單介紹python輸出列表元素的所有排列形式Python
- js迴圈中reduce的用法簡單介紹JS
- RPC簡單介紹RPC
- Python簡單介紹Python
- KVM簡單介紹
- RMI簡單介紹
- HTML簡單介紹HTML
- HTML 簡單介紹HTML
- JavaScript 簡單介紹JavaScript
- CSS 簡單介紹CSS
- ajax簡單介紹
- SVG簡單介紹SVG
- Clickjacking簡單介紹
- 【Pandas】簡單介紹
- Map簡單介紹
- JSON簡單介紹JSON
- ActiveMQ簡單介紹MQ
- 簡單介紹Golang切片刪除指定元素的三種方法Golang
- 簡單介紹Vue中使用js-cookie詳情VueJSCookie
- 簡單介紹Angular單元測試之事件觸發的實現Angular事件
- DOM0、DOM2、DOM3事件處理方式的區別是什麼?事件
- Node.js Event Loop 處理的幾大週期介紹Node.jsOOP
- Git_簡單介紹Git
- jQuery Validate簡單介紹jQuery
- JSON物件簡單介紹JSON物件
- 簡單介紹 ldd 命令
- 禪道簡單介紹
- Webpack 的簡單介紹Web
- Apache Curator簡單介紹Apache