好好學一遍JavaScript 筆記(九)——事件處理函數/監聽函數/事件對象

事件處理器是與特定的文本和特定的事件相聯繫的JavaScript腳本代碼,當該文本發生 改變或者事件被觸發時,瀏覽器執行該代碼並進行相應的處理操做,而響應某個事件而進行的處理過程稱爲事件處理。HTML文檔事件包括用戶載入目標頁面直到 該頁面被關閉期間瀏覽器的動做及該頁面對用戶操做的響應,主要分爲瀏覽器事件和HTML元素事件兩大類。在瞭解這兩類事件以前,先來了解事件捆綁的概念。 HTML文檔將元素的經常使用事件(如 件的事件處理器就被執行,並將處理結果返回給瀏覽器。事件捆綁致使特定的代碼放置在其所處對象的事件處理器中。若是在javaScript中分配事件處理 函數、則須要首先得到要處理的對象的引用、而後將函數賦值給對應的事件處理函數屬性、示例:javascript

  
  
           
  
  
  1. <div id="divId">點擊</div>    
  2.     <!-- 注意JS代碼要放在div元素以後、若是先執行JS在執行div元素的話、   
  3.          document是獲取不到對象的、要時刻記住、解釋執行的的特性   
  4.                         另一點就是事件處理函數名稱必須小寫才能正確響應事件。 -->   
  5.     <script type="text/javascript">   
  6.             var oDiv = document.getElementById("divId");   
  7.             oDiv.onclick = function (){   
  8.                 alert("javaScript事件處理函數!");    
  9.             };     
  10.     </script>   
  11.     <div onClick="alert('HTML中分配事件處理函數!');">點擊</div>  

事件對象
建立包含關於剛剛發生的事件的信息的事件對象、包含的信息以下:
        一、引發事件的對象;
        二、事件發生時鼠標的信息;
        三、事件發生時鍵盤的信息。
java

事件對象只在發生事件時才被建立、且只有事件處理函數才能訪問。全部事件處理函數執行完畢後、事件對象就被銷燬。瀏覽器

定位:
        在IE中、事件對象是Window對象的一個屬性event。事件處理函數必須這樣訪問事件對象:
ide

  
  
           
  
  
  1. oDiv.onclick = function () {   
  2.            var oEvent = window.event;   
  3.        }   

在DOM兼容的瀏覽器(如Mozilla、Safari和Opera)中訪問事件對象、要這麼作:函數

  
  
           
  
  
  1. oDiv.onlcik =function (){   
  2.             var oEvent = arguments[0];   
  3.         }   

也能夠直接命名參數、訪問就更方便:spa

  
  
           
  
  
  1. oDiv.onclick = function (oEvent) {}   

 

屬性方法:.net

下面是IE中的屬性以及方法對象


DOM事件對象屬性核心方法seo

類似性:
一、獲取事件類型
這樣可在任何一種瀏覽器中獲取事件的類型:
事件

  
  
           
  
  
  1. <div id="divId">   
  2.     ---------------------------------------------------------------------------------------------------------------------------------   
  3.     ---------------------------------------------------------------------------------------------------------------------------------   
  4.     ---------------------------------------------------------------------------------------------------------------------------------   
  5.     ---------------------------------------------------------------------------------------------------------------------------------   
  6.     </div>   
  7.     <div>   
  8.         <input type="text" id="testId" onkeydown="keyFunction();" onkeyup="keyFunction();"/>   
  9.     </div>     
  10.     <script type="text/javascript">   
  11.         var oDiv = document.getElementById("divId");    
  12.         function eFunction(oEvent){   
  13.             /**oEvent.type在IE會報錯、說type爲空或不是對象、火狐木有問題**/   
  14.             if(oEvent.type == "click"){   
  15.                 alert("click");   
  16.             }else if(oEvent.type == "mouseover"){   
  17.                 alert("mouseover");   
  18.             }   
  19.         }    
  20.         function ieFunction(){     
  21.             /**IE須要這樣獲取event對象**/   
  22.             var oEvent = window.event;   
  23.             if(oEvent.type == "click"){   
  24.                 alert("click");   
  25.             }else if(oEvent.type == "mouseover"){   
  26.                 alert("mouseover");    
  27.             }   
  28.                
  29.                
  30.             /**  
  31.              * 獲取客戶端座標  
  32.              */   
  33.              alert("獲取客戶端座標X: "+oEvent.clientX+"   Y: "+oEvent.clientY);   
  34.                
  35.                
  36.             /**  
  37.              * 獲取屏幕座標   
  38.              */   
  39.              alert("獲取屏幕座標X: "+oEvent.screenX+"   Y: "+oEvent.screenY);   
  40.         }   
  41.         //oDiv.onclick = eFunction;   
  42.         //oDiv.onmouseover = eFunction;    
  43.         oDiv.onclick = ieFunction;     
  44.         oDiv.onmouseover = ieFunction;     
  45.            
  46.            
  47.         /**獲取按鍵的數值代碼**/   
  48.         function keyFunction(){    
  49.             /**  
  50.              * onkeyup 是在用戶放開任何先前按下的鍵盤鍵時發生。  
  51.              * onkeydown 是在用戶按下任何鍵盤鍵時發生。    
  52.              */    
  53.             var oEvent = window.event;     
  54.             var keyValue = oEvent.keyCode;   
  55.             //alert(keyValue);     
  56.                
  57.             /**檢測shift、alt鍵是否被按下返回的是boolean值**/   
  58.             var bshift = oEvent.shiftKey;     
  59.             var balt = oEvent.altKey;    
  60.             alert("shift: "+bshift+" alt:"+balt);         
  61.         }   
  62.     </script>  
相關文章
相關標籤/搜索