JavaScript阻止事件冒泡的兼容写法:stopPropagation和cancelBubble 来源:未知 作者: 类型:文章教程 点击次数: 发布时间:2016-09-02 17:09:43 事件冒泡,顾名思义,就是子元素的事件,会触发到祖辈元素,这样有时候会导致一个问题,举个例子,点击按钮,菜单显示,点击body空白区域,菜单隐藏。那么,由于按钮在body里面,点击按钮的时候,会将自己的事件和body的事件都执行了,这样,无论如何,菜单也不会出来。所以,点击按钮的时候,要阻止它往上冒泡,这就是阻止事件冒泡的由来。 阻止事件冒泡的写法,IE和火狐谷歌不一样(IE9之后,测试过,可以和IE和谷歌一致了),IE是 event.cancelBubble,而火狐和谷歌是stopPropagation,下面这段代码是兼容性的写法: <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>JavaScript阻止事件冒泡的兼容写法 - 我爱模板网 www.5imoban.net</title> <script type="text/javascript"> function clickDiv(){ alert("clickDiv"); } function clickP(event){ stopEvent(event); alert("clickP"); } function stopEvent(event){ //阻止冒泡事件 //取消事件冒泡 var e=arguments.callee.caller.arguments[0]||event; //若省略此句,下面的e改为event,IE运行可以,但是其他浏览器就不兼容 if (e && e.stopPropagation) { //火狐和chrome的写法 e.stopPropagation(); } else if (window.event) { //IE的写法 window.event.cancelBubble = true; } } </script> </head> <body> <div onclick="clickDiv()" style="width:100px; height:100px; background-color:red;"> <p onclick="clickP(event)" style="width:50px; height:50px; margin:auto; background-color:green;"> 我爱模板网 </p> </div> </body> </html> 提示:您可以先修改部分代码再运行 TAGS: js阻止事件冒泡 上一篇: js运行代码原理,js运行代码教程 下一篇: js正则表达式截取图标名和后缀名