js 停止事件冒泡 阻止浏览器的默认行为
admin
2023-07-31 19:44:27
0

在前端开发工作中,由于浏览器兼容性等问题,我们会经常用到“停止事件冒泡”和“阻止浏览器默认行为”。

浏览器默认行为:

在form中按回车键就会提交表单;单击鼠标右键就会弹出context menu.

a标签

1..停止事件冒泡

JavaScript代码


1 //如果提供了事件对象,则这是一个非IE浏览器2 if ( e && e.stopPropagation )3 //因此它支持W3C的stopPropagation()方法4 e.stopPropagation(); 
5 else6 //否则,我们需要使用IE的方式来取消事件冒泡 7 window.event.cancelBubble = true;8 return false;

2.阻止浏览器的默认行为

JavaScript代码

 1 element.|| window.event;   
 4  5 //如果提供了事件对象,则这是一个非IE浏览器  6  7 if (event&& event.preventDefault) { 8  9   //阻止默认浏览器动作(W3C) 10 11         event.preventDefault();  
12 13     } else { 
14 15     //IE中阻止函数器默认动作的方式 16 17         window.event.returnValue = false;  
18 19     }  
20 21   //event.preventDefault?event.preventDefault():(event.returnValue = false);  22 23 }

或者直接返回false:

element.onclick = function(event) {  
  //...  
  return false;  
}

但是在使用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


相关内容

热门资讯

伊朗议长:霸凌与敲诈的时代已经... 伊朗伊斯兰议会议长卡利巴夫8日在社交媒体上发文,强烈谴责美国“严重违反”伊美谅解备忘录。卡利巴夫说,...
致癌油风暴延烧,台民意机构通过... 海峡导报综合报道 台湾“中联油脂”大豆油致癌物超标,民进党当局政策反复、一度盖牌引发民怨,台民意机构...
伊朗强硬反击:打了85个美军重... 美伊冲突再起,美军对伊朗80多个目标进行了打击,伊朗方面强势反击。据伊朗学生通讯社7月8日凌晨报道,...
美国对伊打击规模扩大,美伊谈判... 美国声称本次打击规模是先前的4至5倍,并撤销了对伊朗石油制裁的豁免,美伊谈判是否岌岌可危?凤凰卫视连...
坐拥6套顶奢豪宅!140亿身价... 文丨金融八卦女特约作者:清炫36岁的全球流行天后“霉霉”,正式完婚了!当地时间7月3日晚,纽约麦迪逊...
广西横州一被蛇咬伤女子不幸离世... 7月8日,新京报记者多方核实获悉,广西横州云表镇一名被蛇咬伤的女子不幸离世。参与救助的村民称,因道路...
拉高“抗中”力道!亲绿媒体人矢... 台湾致癌毒油风暴延烧,赖清德当局延迟公布相关业者名单,遭批评处理慢半拍。面对要求相关官员下台负责声浪...
伊朗伊斯兰革命卫队称对85个美... 【环球网快讯】综合英国《卫报》等媒体8日最新报道,伊朗伊斯兰革命卫队称,伊朗伊斯兰革命卫队对位于巴林...
见证中原人居升级|中原芯首座四... 7月7日,通派龙湖·中原颂特邀郑州市房屋交易中心及郑州市不动产登记中心入驻项目现场,专项开展业主不动...
伊朗革命卫队称击落美军MQ9无... 据伊朗媒体今天(7月8日)报道,伊朗伊斯兰革命卫队称在伊朗南部击落了一架美军MQ-9“死神”无人机。