js有很多阻止默认行为的方法,阻止默认行为 例如我们不想让一个链接进行跳转,就可以用事件对象的阻止默认行为的方法,比如:e.preventDefault ():及stoppropogation()
preventDefault ():
点击链接后不再跳转,阻止了默认属性,这种写法为 DOM 的标准写法
<ahref="http://www.baidu.com/"target="_blank">这是一个链接可以跳转</baidu></a><script>vara=document.querySelector('a'); a.addEventListener('click',function(e){ e.preventDefault(); }) </script>
对于一些低版本的浏览器,例如 ie678 版本,不支持上述写法,我们要用到另一个方法
e.returnValue
<ahref="http://www.baidu.com/"target="_blank">这是一个链接可以跳转</baidu></a><script>vara=document.querySelector('a'); a.addEventListener('click',function(e){ e.returnValue; }) </script>
在事件流中,如果父级子级均有 addEventListener 注册事件并且第三个属性值为 false (冒泡阶段),我们点击 子级别 后就会连同 父级 一同输出,如果有更高级如 body document等也会依次由低到高输出,但是我们只想让其中某一级输出怎么办,这就用到了 阻止冒泡
e.stopPropagation()
<script>varson=document.querySelector('.son'); varfather=document.querySelector('.father'); son.addEventListener('click',function(e){ alert('son'); e.stopPropagation(); },false); father.addEventListener('click',function(e){ alert('father'); e.stopPropagation(); },false); document.addEventListener('click',function(e){ alert('document'); e.stopPropagation(); },false) </script>
点击后每次只会弹出当前级别的提示框,不会再按照事件流的顺序依次执行