在开发中阻止默认事件和阻止冒泡事件是常用的,下面封装这两个方法。
1.阻止冒泡
阻止冒泡IE9以上使用event.stopPropagation()
,IE9一下使用event.cancelBubble = true
。示例:
<div id='demo'>阻止冒泡</div>
<script>
document.onclick = function () { // document点击事件,检验是否触发冒泡
console.log('I\'m document');
}
var demo = document.getElementById('demo'); // 获取div元素
demo.onclick = function (e) { // div点击事件
var event = e || window.event; // 获取事件对象,兼容IE
stopBubble(event) // 调用封装的冒泡方法
console.log('I\'m div Elemenet')
}
function stopBubble(event) { // 封装兼容性良好的‘阻止冒泡’
if (event.stopPropagation) {
event.stopPropagation() // IE9以下不兼容
} else { // 兼容IE
event.cancelBubble = true;
}
}
</script>
2.阻止默认事件
阻止默认事件,非IE内核使用event.preventDefault()
,IE内核使用event.returnValue=false
。示例:
<a href='https://www.baidu.com' id='demo'>阻止超链接默认跳转事件</a>
var demo = document.getElementById('demo'); // 获取a元素
demo.onclick = function (e) { // div点击事件
var event = e || window.event; // 获取事件对象,兼容IE
stopDefualtHandl(event) // 调用封装的阻止默认事件方法
console.log('我没跳转')
}
function stopDefualtHandl(event) { // 封装兼容性良好的阻止默认事件方法
if (event.preventDefault) {
event.preventDefault(); // 非IE,阻止默认事件
} else {
event.returnValue = false; // 兼容IE,阻止默认事件
}
}