事件冒泡:
从里往外逐个触发, 事件捕获, 是从外往里逐个触发. 现代的浏览器默认情况下都是事件冒泡的模式。
在触发事件时候 会一层一层向上冒泡 (他同时会触发父类的事件)
阻止事件冒泡 :意思就是阻止事件的向上传递(stopPropagation)
stopPropagation 这个方法可以阻止事件冒泡,且他遵从w3c规则 (兼容各大浏览器 ie9之前不兼容)
ie浏览器的阻止事件冒泡 利用了一个属性 ,cancelBubble 设置为true 他也兼容各大浏览器(不遵从w3c规范 未来这个属性可能没有用)
btn.onclick = function(e){ //得到事件源对象 e = e || window.event //阻止事件向上冒泡 e.stopPropagation() e.cancelBubble = true //取消冒泡 不建议写这种 if(e.stopPropagation){ //如果浏览器可以使用 e.stopPropagation() //就是用这个 }else{ e.cancelBubble = true //如果不能使用就使用这个 }
默认事件
阻止默认事件:( return false ) 遵从w3c但是ie9浏览器之前不支持(常用的)
阻止默认事件:( e.preventDefault() )针对低版本浏览器
document.getElementByTagName('a')[0].onclick = function(e){ console.log('点击了')