首页 > 编程 > JavaScript > 正文

js阻止冒泡和默认事件(默认行为)详解

2019-11-20 08:42:19
字体:
来源:转载
供稿:网友

本文实例为大家分享了js阻止冒泡默认事件方法,供大家参考,具体内容如下

阻止冒泡。冒泡简单的举例来说,儿子知道了一个秘密消息,它告诉了爸爸,爸爸知道了又告诉了爷爷,一级级传递从而引起事件的混乱,而阻止冒泡就是不让儿子告诉爸爸,爸爸自然不会告诉爷爷了。下面的domo就是很好的例子。

<!DOCTYPE html> <html>    <head>     <meta charset="UTF-8">     <title></title>     <style type="text/css">       #box {         width: 300px;         height: 300px;         background: red;         display: none;       }     </style>     <script type="text/javascript">       window.onload = function() {           var btn = document.getElementById('btn');           var box = document.getElementById('box');           btn.onclick = function(ev) {             var oEvent = ev || event;             box.style.display = 'block';             //oEvent.cancelBubble = true;//高版本浏览器             stopBubble(oEvent);             //在低版本的chrome和firefox浏览器中需要兼容性处理             //高版本chrome和firefox浏览器直接使用上面这行代码即可           }           document.onclick = function() {             box.style.display = 'none';           }          }         //阻止冒泡事件的兼容性处理       function stopBubble(e) {         if(e && e.stopPropagation) { //非IE           e.stopPropagation();         } else { //IE           window.event.cancelBubble = true;         }       }     </script>   </head>    <body>     <input type="button" id="btn" value="语言" />     <div id="box"></div>   </body>  </html> 


我所实现的效果是:点击按钮btn让box显示,而点击其他地方则让box消失。
如果我不阻止冒泡的话,那么首先btn会触发点击时间,让盒子显示,但是由于box是包含在document中的,所以会向上冒泡又触发document的点击事件,盒子又消失。这个事件的执行顺序可以在不同的点击事件中使用alert来验证。关于cancelBubble的兼容性处理在高版本的chrome和firefox中已经不需要兼容处理了,直接使用oEvent.cancelBubble = true 即可。下面的阻止浏览器事件的兼容性处理在高版本浏览器中同样不需要。

默认事件。即浏览器本身具备的功能。

function preventDefa(e){   if(window.event){     //IE中阻止函数器默认动作的方式      window.event.returnValue = false;    }   else{     //阻止默认浏览器动作(W3C)      e.preventDefault();   }  } 

这种是兼容性写法,但是如果你只需要支持高版本浏览器的话,那么如上文一样,一句话即可。

btn.onclick = function (){   return false; } 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表