DOM事件探索
前端開發
JavaScriptD
DOM
1.事件流
事件流描述的是從頁面中接受事件的順序。
IE的事件流是事件冒泡流,而Netscape的事件流是事件捕獲流
- 事件冒泡:事件從最開始的最具體的元素接受,然後逐級向上傳遞,傳遞到最不具體的元素(節點,也就是文件)。打個比方就是從處理這件事的業務員傳遞到總經理的過程。
- 事件捕獲:接受過程和事件冒泡相反,最不具體元素最先接受事件然後傳遞到最具體元素。也就是總經理想起一個什麼事然後叫業務員辦這個事。
2.事件處理程式
1.HTML事件處理程式
2.DOMO級事件處理程式
3.DOM2級事件處理程式
DOM2級事件定義了兩個方法:用於處理指定和刪除事件處理程式的操作,addEventListener()和removeEventListener()。接受三個引數:要處理的事件名、作為事件處理程式的函式和布林值。
4.IE事件處理程式
attachEvent()新增事件
detachEvent()刪除事件
這兩個方法接收相同的兩個引數:事件處理程式名稱與事件處理函式
跨瀏覽器的事件處理程式:
var eventUtil={
// 新增控制程式碼
addHandler:function(element,type,handler){
if(element.addEventListener){
element.addEventListener(type,handler,false);
}else if(element.attachEvent){
element.attachEvent('on'+type,handler);
}else{
element['on'+type]=handler;
}
},
// 刪除控制程式碼
removeHandler:function(element,type,handler){
if(element.removeEventListener){
element.removeEventListener(type,handler,false);
}else if(element.detachEvent){
element.detachEvent('on'+type,handler);
}else{
element['on'+type]=null;
}
},
getEvent:function(event){
return event?event:window.event;
},
getType:function(event){
return event.type;
},
getElement:function(event){
return event.target || event.srcElement;
},
preventDefault:function(event){
if(event.preventDefault){
event.preventDefault();
}else{
event.returnValue=false;
}
},
stopPropagation:function(event){
if(event.stopPropagation){
event.stopPropagation();
}else{
event.cancelBubble=true;
}
}
}
使用:
window.onload=function(){
var go=document.getElementById('go'),
box=document.getElementById('box');
eventUtil.addHandler(box,'click',function(){
alert('我是整個父盒子');
});
eventUtil.addHandler(go,'click',function(e){
//e=eventUtil.getEvent(e);
e=e || window.event;
alert(eventUtil.getElement(e).nodeName);
eventUtil.preventDefault(e);
eventUtil.stopPropagation(e);
});
}
3.事件物件
1.DOM中的事件物件
(1)、type:獲取事件型別
(2)、target:事件目標
(3)、stopPropagation() 阻止事件冒泡
(4)、preventDefault() 阻止事件的預設行為
2.IE中的事件物件
(1)、type:獲取事件型別
(2)、srcElement:事件目標
(3)、cancelBubble=true阻止事件冒泡
(4)、returnValue=false阻止事件的預設行為
相關文章
- Dom事件事件
- DOM - 事件事件
- React 事件和 Dom 事件React事件
- DOM事件類事件
- DOM事件流事件
- DOM 事件詳解事件
- DOM事件機制事件
- js Dom之事件JS事件
- DOM事件簡介事件
- jquery DOM&事件jQuery事件
- DOM Ready 事件事件
- [DOM Event Learning] Section 4 事件分發和DOM事件流事件
- javaScript事件,Bom,Dom物件JavaScript事件物件
- DOM事件第一彈事件
- 事件冒泡、事件捕獲、DOM0級事件處理程式、DOM2級事件處理程式事件
- DOM Level 3 Events: DOM事件架構(2-1)事件架構
- DOM Level 3 Events: DOM事件架構(2-2)事件架構
- [譯] 探索 Angular 使用 ViewContainerRef 操作 DOMAngularViewAI
- 深入理解DOM事件機制事件
- 深入理解js Dom事件機制(一)——事件流JS事件
- DOM0事件和DOM2事件模型 —— JS中的設計模式和元件封裝事件模型JS設計模式元件封裝
- React合成事件和DOM原生事件混用須知React事件
- [DOM Event Learning] Section 2 概念梳理 什麼是事件 DOM Event事件
- javascript避免dom事件重複觸發JavaScript事件
- AngularJS SQL+HTML DOM+事件AngularJSSQLHTML事件
- 高頻 dom 操作和頁面效能優化探索優化
- jQuery實現DOM元素事件動態繫結jQuery事件
- js dom元素事件處理簡單介紹JS事件
- 實現比較通用的DOM事件掛載、事件解除安裝(相容)事件
- 10.0 探索API除錯事件原理API除錯事件
- 探索View的事件分發機制View事件
- DOM事件模型與Internet explorer事件模型之繫結機制薦事件模型
- JavaScript的基礎語法及DOM元素和事件JavaScript事件
- Dom中高big 事件總結(持續更新中)事件
- 如何優雅的封裝一個DOM事件庫封裝事件
- jquery給動態新增的dom元素繫結事件jQuery事件
- DOM參考手冊及事件參考手冊事件
- 動態建立的DOM元素進行事件繫結事件