本文实例为大家分享了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;
}
发表回复