您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
免费发信息
三六零分类信息网 > 阿勒泰分类信息网,免费分类信息发布

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

2024/4/8 12:30:10发布77次查看
本文实例为大家分享了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; }
阿勒泰分类信息网,免费分类信息发布

VIP推荐

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