JavaScriptノート(十)をよく勉強してください.IEとDOMイベント関数の違いです.


1、取得対象がイベントセンターにあるオブジェクトをターゲットとしています.<div/>要素割り当てOclickイベント処理関数、clickイベントをトリガした場合、<div/>がターゲットとされています.IE、ターゲットは、イベントオブジェクトのsrcele ment属性に含まれる:

  
  
  
  
  1. var oTarget = oEvent.srcElement;   
DOM対応のブラウザには、ターゲットがtarget属性に含まれています.

  
  
  
  
  1. var oTarget = oEvent.target;   
例:

  
  
  
  
  1. <div id="divId" onclick="testFunction(event)">  </div>   
  2.     <script type="text/javascript" >        
  3.         var sUserAgent = navigator.userAgent;        
  4.         var isIE = sUserAgent.indexOf("compatible") > -1 && sUserAgent.indexOf("MSIE") > -1;   
  5.         var isMoz = sUserAgent.indexOf("Gecko") > -1;     
  6.         function testFunction(oEvent){   
  7.             if(isIE){      
  8.                 alert("IE");   
  9.                 var oEvent = window.event;      
  10.                 //IE、 event srcElement :   
  11.                 var oTarget = oEvent.srcElement;      
  12.                 alert(oTarget.innerText);               
  13.                 return;    
  14.             }      
  15.             if(isMoz){   
  16.                 alert(" : "+oEvent);    
  17.                 /**  
  18.                  *   
  19.                  *  innerText 、 innerHTML  
  20.                  *  innerText .    
  21.                  *   
  22.                  *  innerText**/   
  23.                 HTMLElement.prototype.__defineGetter__("innerText",   
  24.                 function ()   
  25.                 {   
  26.                     var anyString = "";   
  27.                     var childS = this.childNodes;   
  28.                     for (var i = 0; i < childS.length; i++)   
  29.                     {   
  30.                         if (childS[i].nodeType == 1)   
  31.                             anyString += childS[i].tagName == "BR"   
  32.                              ? "\r
    "
     : childS[i].textContent;   
  33.                         else if (childS[i].nodeType == 3)   
  34.                             anyString += childS[i].nodeValue;   
  35.                     }   
  36.                     return anyString;   
  37.                 });   
  38.                 HTMLElement.prototype.__defineSetter__("innerText",   
  39.                 function (sText)   
  40.                 {   
  41.                     this.textContent = sText;     
  42.                 });   
  43.                 /**end**/     
  44.                 // DOM 、 target :   
  45.                 var oTarget = oEvent.target;       
  46.                 alert(oTarget.innerText);                         
  47.                 return;         
  48.             }       
  49.         }   
  50.            
  51.     </script>   
2、あるイベントを阻止するデフォルト行動IEは、リターンValue属性をfalseに設定しなければならない.

  
  
  
  
  1. oEvent.returnValue = false;   
Mozillaでは、preventDefault()メソッドを呼び出す限り:

  
  
  
  
  1. oEvent.preventDefault();  
ユーザがページを右クリックすると、彼がメニューを使うのを阻止します.contextmenuイベントのデフォルトを阻止すればいいです.

  
  
  
  
  1. doucment.body.oncontextmenu = function (oEvent){   
  2.     if(isIE){   
  3.         oEvent = window.event;   
  4.         oEvent.returnValue = false;   
  5.     }else{   
  6.         oEvent.preventDefault();   
  7.     }   
  8. };   
3、イベントコピーの停止(発泡)  IEでは、イベントのさらなる泡立ちを防ぐために、cancel Bbble属性をtrueに設定しなければならない:

  
  
  
  
  1. oEvent.cancelBubble = true
Mozillaでは、stopPropagation()メソッドを呼び出すだけです.

  
  
  
  
  1. oEvent.stopPropagation();  
イベントコピーを停止すると、イベントフローの他のオブジェクトのイベント処理関数の実行を阻止できます.以下のbuttonボタンをクリックするとinput、bodyがポップアップします.

  
  
  
  
  1. <html onclick="alert('html');">   
  2.   <head>   
  3.     <title> ( )</title>   
  4.   </head>    
  5.   <body  onclick="alert('body');">   
  6.     <input type="button" onclick="alert('input');" value=" " />      
  7.   </body>    
  8. </html> 
以下はボタンでコピーを停止します.
 

  
  
  
  
  1. <html onclick="alert('html');">   
  2.   <head>   
  3.     <title> ( )</title>   
  4.     <script type="text/javascript">   
  5.         var sUserAgent = navigator.userAgent;          
  6.         var isIE = sUserAgent.indexOf("compatible") > -1 && sUserAgent.indexOf("MSIE") > -1;   
  7.         function testClick(oEvent){   
  8.             alert("input");   
  9.             if(isIE){   
  10.                 var oEvent = window.event;   
  11.                 oEvent.cancelBubble = true;   
  12.             }else{   
  13.                 oEvent.stopPropagation();     
  14.             }      
  15.         }      
  16.     </script>   
  17.   </head>    
  18.   <body  onclick="alert('body');">   
  19.     <input type="button" onclick="testClick(event);" value=" " />      
  20.  <br />      
  21.   </body>    
  22. </html>