您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

js怎么停止冒泡和阻止浏览器默认行为实例

2026/2/7 2:55:00发布17次查看

事件兼容
function myfn(e){ var evt = e ? e:window.event; }
js停止冒泡
function myfn(e){ window.event? window.event.cancelbubble = true : e.stoppropagation(); }
js阻止默认行为
function myfn(e){ window.event? window.event.returnvalue = false : e.preventdefault(); }
防止冒泡w3c的方法是e.stoppropagation(),ie则是使用e.cancelbubble = true
stoppropagation也是事件对象(event)的一个方法,作用是阻止目标元素的冒泡事件,但是会不阻止默认行为。什么是冒泡事件?如在一个按钮是绑定一个”click”事件,那么”click”事件会依次在它的父级元素中被触发 。stoppropagation就是阻止目标元素的事件冒泡到父级元素。如:·
e849e780724ad7e3d96667dbe71b15d8 d13c37413a3b74a6f638c2bd0a192e36 e625d1e300d7d5c06d09121b24123e42testbed06894275b65c1ab86501b08a632eb 929d1f5ca49e04fdcb27f9465b944689 16b28748ea4df4d9c2150843fecfba68
上面的,demo如下,我们单击test时,会依次触发alert(“li”),alert(“ul”),alert(“div”),这就是事件冒泡。
测试冒泡
阻止冒泡
window.event? window.event.cancelbubble = true : e.stoppropagation();
停止冒泡
阻止默认行为w3c的方法是e.preventdefault(),ie则是使用e.returnvalue = false;
preventdefault它是事件对象(event)的一个方法,作用是取消一个目标元素的默认行为。既然是说默认行为,当然是元素必须有默认行为才能被取消,如果元素本身就没有默认行为,调用当然就无效了。什么元素有默认行为呢?如链接3499910bf9dac5ae3c52d5ede7383485,提交按钮b37f60cf70593a0aa3723567edef162d等。当event 对象的 cancelable为false时,表示没有默认行为,这时即使有默认行为,调用preventdefault也是不会起作用的。
我们都知道,链接3499910bf9dac5ae3c52d5ede7383485的默认动作就是跳转到指定页面,下面就以它为例,阻止它的跳转:
//假定有链接108bdfb517e761bb879be093c0040de3caibaojian.com5db79b134e9f6b82c0b36e0489ee08ed var a = document.getelementbyid(testa); a.onclick =function(e){ if(e.preventdefault){ e.preventdefault(); }else{ window.event.returnvalue == false; } }
return falsejavascript的return false只会阻止默认行为,而是用jquery的话则既阻止默认行为又防止对象冒泡。
下面这个使用原生js,只会阻止默认行为,不会停止冒泡
189abb41602d7abb5d5cced596eb4786 9a890ec87bb66ce61544c585573e657b 50ca1a0a17a7c2bd4f0d183bac237316d85963b455defc45a0e7b4a3d9b74ebecaibaojian.com5db79b134e9f6b82c0b36e0489ee08edbed06894275b65c1ab86501b08a632eb 929d1f5ca49e04fdcb27f9465b944689 16b28748ea4df4d9c2150843fecfba68 var a = document.getelementbyid(testb); a.onclick = function(){ return false; };
下面这个是使用jquery,既阻止默认行为又停止冒泡
//code from  189abb41602d7abb5d5cced596eb4786 9a890ec87bb66ce61544c585573e657b 50ca1a0a17a7c2bd4f0d183bac2373169e974483976d37374c9db7635fc7fceacaibaojian.com5db79b134e9f6b82c0b36e0489ee08edbed06894275b65c1ab86501b08a632eb 929d1f5ca49e04fdcb27f9465b944689 16b28748ea4df4d9c2150843fecfba68 $(#testc).on('click',function(){ return false; });
演示:既停止冒泡又阻止默认行为
caibaojian.com
总结使用方法当需要停止冒泡行为时,可以使用
function stopbubble(e) { //如果提供了事件对象,则这是一个非ie浏览器 if ( e && e.stoppropagation ) //因此它支持w3c的stoppropagation()方法 e.stoppropagation(); else //否则,我们需要使用ie的方式来取消事件冒泡 window.event.cancelbubble = true; }
当需要阻止默认行为时,可以使用
//阻止浏览器的默认行为 function stopdefault( e ) { //阻止默认浏览器动作(w3c) if ( e && e.preventdefault ) e.preventdefault(); //ie中阻止函数器默认动作的方式 else window.event.returnvalue = false; return false; }
事件注意点event代表事件的状态,例如触发event对象的元素、鼠标的位置及状态、按下的键等等;
event对象只在事件发生的过程中才有效。
firefox里的event跟ie里的不同,ie里的是全局变量,随时可用;firefox里的要用参数引导才能用,是运行时的临时变量。
在ie/opera中是window.event,在firefox中是event;而事件的对象,在ie中是window.event.srcelement,在firefox中是event.target,opera中两者都可用。
下面两句效果相同:
function a(e){ var e = (e) ? e : ((window.event) ? window.event : null); var e = e || window.event; // firefox下window.event为null, ie下event为null }

以上就是js怎么停止冒泡和阻止浏览器默认行为实例的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product