js 事件对象(二)

来源:互联网 发布:软件开发培训技术学校 编辑:程序博客网 时间:2024/05/19 23:04

一、js阻止冒泡

[javascript] view plain copy
  1. w3c的方法是e.stopPropagation(),IE则是使用e.cancelBubble = true  
  2. function myfn(e){  
  3.     window.event ? window.event.cancelBubble = true : e.stopPropagation();  
  4. }  

二、js阻止默认行为

[javascript] view plain copy
  1. 1、w3c的方法是e.preventDefault(),IE则是使用e.returnValue = false;  
  2. function myfn(e){  
  3.     window.event ? window.event.returnValue = false : e.preventDefault();  
  4. }  
  5. 2、普通写法  
  6. reutrn false;  //在火狐浏览器上是事件绑定该写法不生效 火狐上是事件绑定阻止默认事件要用 e.preventDefault();  

三、总结使用方法

[javascript] view plain copy
  1. 1、当需要停止冒泡行为时,可以使用  
  2. function stopBubble(e) {   
  3.     //如果提供了事件对象,则这是一个非IE浏览器   
  4.     if ( e && e.stopPropagation ){   
  5.         //因此它支持W3C的stopPropagation()方法   
  6.         e.stopPropagation();   
  7.     }else{   
  8.         //否则,我们需要使用IE的方式来取消事件冒泡   
  9.         window.event.cancelBubble = true;  
  10.     }   
  11. }  
  12. 2、当需要阻止默认行为时,可以使用  
  13. //阻止浏览器的默认行为   
  14. function stopDefault( e ) {   
  15.     //阻止默认浏览器动作(W3C)   
  16.     if ( e && e.preventDefault ){   
  17.         e.preventDefault();   
  18.     //IE中阻止函数器默认动作的方式   
  19.     }else{   
  20.         window.event.returnValue = false;    
  21.     }  
  22. }  

四、自定义右键菜单

[html] view plain copy
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  2. <html xmlns="http://www.w3.org/1999/xhtml">  
  3. <head>  
  4. <style>  
  5. * {margin:0; padding:0;}  
  6. #ul1 {width:100px; background:#CCC; border:1px solid black; position:absolute; display:none;}  
  7. </style>  
  8. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
  9. <title>无标题文档</title>  
  10. <script>  
  11. document.oncontextmenu=function (ev)  
  12. {  
  13.     var oEvent=ev||event;  
  14.     var oUl=document.getElementById('ul1');  
  15.       
  16.     oUl.style.display='block';  
  17.     oUl.style.left=oEvent.clientX+'px';  
  18.     oUl.style.top=oEvent.clientY+'px';  
  19.       
  20.     return false;  
  21. };  
  22.   
  23. document.onclick=function ()  
  24. {  
  25.     var oUl=document.getElementById('ul1');  
  26.       
  27.     oUl.style.display='none';  
  28. };  
  29. </script>  
  30. </head>  
  31.   
  32. <body>  
  33. <ul id="ul1">  
  34.     <li>登陆</li>  
  35.     <li>回到首页</li>  
  36.     <li>注销</li>  
  37.     <li>加入VIP</li>  
  38. </ul>  
  39. </body>  
  40. </html>  


【事件注意点】

event代表事件的状态,例如触发event对象的元素、鼠标的位置及状态、按下的键等等;event对象只在事件发生的过程中才有效。firefox里的event跟IE里的不同,IE里的是全局变量,随时可用;firefox里的要用参数引导才能用,是运行时的临时变量。在IE/Opera中是window.event,在Firefox中是event;而事件的对象,在IE中是window.event.srcElement,在Firefox中是event.target,Opera中两者都可用。下面两句效果相同:
[javascript] view plain copy
  1. function a(e){  
  2.     var e = (e) ? e : ((window.event) ? window.event : null);   
  3.     var e = e || window.event; // firefox下window.event为null, IE下event为null  
  4. }