1.? ? 事件對象兼容(兼容IE)
? ??????e? ??=? ??e || window.event;
2.? ??鼠標事件及方法;
屬性名? ? ? ? ? ? ? ? ? ? ? ? ??含義
e.buttons? ? ? ? ? ? ? ? ? ? ? ?返回鼠標點擊按鍵(1左鍵,2右鍵,4中鍵滾輪)
e.offsetX / offsetY? ? ? ? ? 獲取事件觸發(fā)最近的盒子(事件源)的坐標
e.clientX / clientY? ? ? ? ? 獲取可視區(qū)的坐標(根據(jù)瀏覽器的定位)
e.screenX / screenY? ? ?獲取整個屏幕的坐標
e.pageX / e.pageY????????獲取文檔的坐標(包含滾動條)
3.? ? 獲取鍵碼兼容
????e.keyCode || e.which
4.? ??特殊鍵碼:是否按下alt ?ctrl ?和 shift
????e.altKey????e.ctrlKey????e.shiftKey? ? 返回值是布爾值;
可以用來判斷組合鍵
if(e.keyCode==13????&&????e.altKey){
? ? ?alert('同時按下了enter和alt');
}
5.? ? 阻止默認事件(有兼容)
if(????e.preventDefault????) {
? ?????e.preventDefault();
????}else {
? ? window.event.returnValue = false;?? ?
????//return false;
}
6.? ??事件流
子元素的事件被觸發(fā)時,父級也會被觸發(fā)(冒泡)
一個完整事件流包含? 捕獲階段 ---> 目標階段? --->冒泡階段

7.????冒泡是可以阻止的
??? ?e .?stopPropagation( );
??? ?e . cancelBubble=true;//兼容IE
8.? ??事件監(jiān)聽
DOM0級事件處理,是一種賦值方式,是被所有瀏覽器所支持的,簡單易懂容易操作;
DOM2級事件處理是所有DOM節(jié)點中的方法,可以重復(fù)綁定,但是瀏覽器兼容存在問題;
?? ?oDiv.attachEvent("onclick", function(){ ... });? // IE只有冒泡階段,所以沒有第三個參數(shù),而且需要加on;
}else{
?? ?oDiv.addEventListener( "click", function(){ ... },false);? // false指冒泡階段
}
//移除事件監(jiān)聽,第二個參數(shù)為必須,移除的事件處理函數(shù)
? ??oDiv.removeEventListener( "click",fn)
? ??oDiv.detachEvent("onclick",fn)
9.? ??判斷事件源:
? ? e.target || e.srcElement