转载于:http://blog.csdn.net/jiachunfeng/article/details/6448186 http://justcoding.iteye.com/blog/587876

 

event对象

IE 中得以平昔动用 event 对象,而 FF
中则无法,消除措施之一如下:
var theEvent = window.event ||
arguments.callee.caller.arguments[0];

其次种是将 event 作为参数来传递:
function xxx(e){var theEvent = window.event || e;}

srcElement 和 target

在 IE 中 srcElement
表示产惹事件的源,比如是哪位按钮触发的 onclick 事件,FF 中则是
target。

var theEvent = window.event ||
arguments.callee.caller.arguments[0];
var theObj=theEvent.target || theEvent.srcElement;

例子:

document.onclick = function(e){
           var theEvent = window.event || e;
           var theObj=theEvent.target || theEvent.srcElement;

function clickAction(){
       var theEvent = window.event ||
arguments.callee.caller.arguments[0];
       var theObj=theEvent.target || theEvent.srcElement;

       // do something;
}

function clickAction(e){
       var theEvent = window.event || e;
       var theObj=theEvent.target || theEvent.srcElement;

       // do something;
}

event.keyCode 和event.which

FF不援救window.event.keyCode,代替着是event.which

列子:

//在网页上面屏蔽tab键的代码
document.onkeydown = function (e){
            var theEvent = window.event || e;
            var code = theEvent.keyCode || theEvent.which;
            if(code == 9){
              return false;
            }
}

 

 

============

Query对DOM的风浪触发具有冒泡本性。有时利用这一表征能够减掉重复代码,但有时候大家又不愿意事件冒泡。这几个时候将要阻止
jQuery.Event冒泡。

 

jQuery.Event
的文档

中的开首得知,jQuery.伊夫nt对象是切合W3C标准的贰个事变指标,同时jQuery.伊芙nt免去了反省包容IE的步子。

 

jQuery.伊夫nt提供了3个格外简单的艺术来阻拦事件冒泡:event.stopPropagation();

 

Js代码  

  1. $(“p”).click(function(event){   
  2.     event.stopPropagation(); // do something   
  3. })  

[js] view
plain
copy

  1. <span style=”font-size:18px;”>$(“p”).click(function(event){  
  2.     event.stopPropagation(); // do something  
  3. })</span>  

 

然则这几个点子对使用live
绑定的轩然大波尚无意义,须求二个更简短的点子阻碍事件冒泡:return false;

 

Js代码  

  1. $(“p”).live(“click”, function(){   
  2.     $(this).after(“Another paragraph!”);   
  3.     return false;
      
  4. });  

[js] view
plain
copy

  1. <span style=”font-size:18px;”>$(“p”).live(“click”, function(){  
  2.     $(this).after(“Another paragraph!”);  
  3.     return false;  
  4. });</span>  

 

 

除此以外 JavaScript 阻止冒泡

 

 阻止冒泡事件的不二法门有两种,第2种是IE的方式,第③种是DOM方法,至于何以要分成二种方式去研讨之,那里就不做研讨了,不问可知是浏览器一些次于的题目,好了废话不说了,直接贴代码了:

 

Js代码  

  1. //阻止冒泡事件
      
  2.  function stopBubble(e) {   
  3.      if (e && e.stopPropagation) {//非IE   
  4.          e.stopPropagation();
      
  5.      }   
  6.      else {//IE
      
  7.          window.event.cancelBubble = true;   
  8.      }   
  9.  }  

[js] view
plain
copy

  1. <span style=”font-size:18px;”>   //阻止冒泡事件  
  2.     function stopBubble(e) {  
  3.         if (e && e.stopPropagation) {//非IE  
  4.             e.stopPropagation();  
  5.         }  
  6.         else {//IE  
  7.             window.event.cancelBubble = true;  
  8.         }  
  9.     }</span>  

 

举个例证:就是谷歌(谷歌(Google))首页的越多选项吧,不知道的能够去看看http://www.google.com/
此间要运用七个点击事件,三个是div.onclick,另三个正是document.onclick,那么难题就涌出了,在调用
div.onclick的时候,由于冒泡事件的留存,会自动的调用document.onclick,由于冒泡的顺序是从里向外的

(div->body->document->html)所以
div.onclick事件就会被掩盖掉,也就不会履行了,化解的方案其实也是相当粗略的啊,正是在履行div.onclick的时候阻止冒泡事件就好了,
那怎么阻止啊,就调用下面的函数就ok了!哈哈!
ps:在介绍一下阻碍浏览器暗许行为的法子,龙岩小异,那里就不再赘述了。

 

Js代码  

  1. function stopDefault(e) {   
  2.      //阻止暗中同意浏览器动作(W3C)   
  3.      if (e && e.preventDefault)   
  4.          e.preventDefault();
      
  5.      //IE中截留函数器暗中同意动作的章程   
  6.      else  
  7.          window.event.returnValue = false;   
  8.      return false;
      
  9.  }    

相关文章

网站地图xml地图