js 停止事件冒泡 阻止浏览器的默认行为
在前端开发工作中,由于浏览器兼容性等问题,我们会经常用到“停止事件冒泡”和“阻止浏览器默认行为”。
浏览器默认行为:
在form中按回车键就会提交表单;单击鼠标右键就会弹出context menu.
a标签
1..停止事件冒泡
JavaScript代码
1//如果提供了事件对象,则这是一个非IE浏览器2if(e&&e.stopPropagation)3//因此它支持W3C的stopPropagation()方法4e.stopPropagation();5else6//否则,我们需要使用IE的方式来取消事件冒泡7window.event.cancelBubble=true;8returnfalse;
2.阻止浏览器的默认行为
JavaScript代码
1element.||window.event;45//如果提供了事件对象,则这是一个非IE浏览器67if(event&&event.preventDefault){89 //阻止默认浏览器动作(W3C)1011event.preventDefault();1213}else{1415 //IE中阻止函数器默认动作的方式1617window.event.returnValue=false;1819}2021 //event.preventDefault?event.preventDefault():(event.returnValue=false);2223}
或者直接返回false:
element.onclick=function(event){//...returnfalse;}
但是在使用return false时必须注意:
1、jQuery有自己的事件处理层,也对处理程序做了封装,如果事件处理程序返回false,事件冒泡和浏览器默认事件都会被阻止。
2、使用原生javaScript,在事件处理程序中返回false只会阻止浏览器默认行为,而事件冒泡依然存在。
3、浏览器默认行为和事件冒泡是相互独立的。阻止事件冒泡不会影响默认行为,反之亦然。
注意:
有一些浏览器行为是在事件处理程序执行前发生的,也就是说这些默认行为是无法取消的,如:在大部分浏览器上鼠标移到一个超链接上超链接的样式会发生改变,这个动作是发生在focus事件之前的,是focus事件处理程序中无法取消的。
摘自:http://blog.csdn.net/jquery_qq/article/details/51568816
http://www.cnblogs.com/yuzhongwusan/archive/2008/12/27/1363417.html
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。