第1章 事件流
1-1.事件冒泡:事件最開始由最具體的元素(文檔中嵌套層次最深的那個節點)接收;
然後逐級向上傳播至最不具體的那個節點(文檔);
1-2.事件捕獲:不太具體的節點應該更早接收到事件,而最具體的節點最後接收到事件;
第2章 事件處理程序
2-1 HTML事件處理程序
//缺點:HTML和JS代碼緊密的耦合在一起;
2-2 DOM0級事件處理程序
//較傳統的方式:把一個函數賦值給一個事件的處理程序屬性,用的比較多;
//優點:簡單/跨浏覽器;
2-3 DOM2級事件處理程序
//DOM2級事件定義了兩個方法:用於處理指定和刪除事件處理程序的操作;
//addEventListener()和removeEventListner();
//接收三個參數:要處理的事件名/事件處理函數和布爾值;
//在IE8一下,不起作用;
2-4 IE事件處理程序及跨浏覽器
//接收兩個參數:事件處理函數名稱和事件處理函數
1 2 3 4 5 <script> var btn3 = document.getElementById('btn3'); btn3.attachEvent('onclick',showMessage); //添加事件; btn3.detachEvent('onclick',showMessage); //刪除事件; </script>>2.浏覽器兼容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 //將添加和刪除事件處理程序封裝到對象中並賦值給變量'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);第3章 事件對象
3-1 DOM中的事件對象
//在觸發DOM上的事件時都會產生一個對象==event;
>1.type == 獲取事件類型;
>2.target == 獲取事件目標;
>3.stopPropagation() == 停止事件冒泡;
>4.preventDefault() == 阻止事件的默認行為;
3-2 IE中的事件對象
>1.type == 同上;
>2.srcElement屬性 == 獲取事件目標;
>3.cancleBubble屬性 == 阻止冒泡;設置true表示阻止冒泡,false為不組織冒泡;
>4.returnValue屬性 == 用於阻止事件的默認行為;
第4章 QQ面板拖拽效果
>1.封裝獲取Class方法
1 2 3 4 5 6 7 8 9 10 11 12 function getClass(clsName,parent){ var oParent = parent?document.getElementById(parent):document, eles = [], elements = oParent.getElementsByTagName('*'); for (var i=0,l=elements.length; i<l; i++){ if(elements[i].className == clsName){ eles.push(elements[i]); } } return eles; }>2.封裝拖拽函數