阻止事件冒泡:IE属性(cancelBubble)VS DOM方法(stopPropagation())(非技术文,纯属放坑)

????事件冒泡与事件捕获介绍:https://www.jb51.net/article/99849.htm

(链接被CSDN和谐,只能复制粘贴)
阻止事件冒泡有两种方法:
1)IE属性(cancelBubble)
2)DOM方法(stopPropagation())
之前学习过程中,发现 IE属性(cancelBubble)并不只在IE浏览器下才生效,Edge(Chrome)、Firefox、Opera、Safari 也都生效。然后我就想:我的天啊!既然五大主流浏览器都支持 cancelBubble,又不存在兼容问题,那干嘛非得去学 stopPropagation() ?但后来在MDN中找到了关于为何不能用 cancelBubble 的解释,我才恍然大悟。

阻止事件冒泡:IE属性(cancelBubble)VS DOM方法(stopPropagation())(非技术文,纯属放坑)
也就是说,IE属性(cancelBubble)并不标准,且有可能在未来被舍弃。避免在未来产生不必要的BUG坑,建议使用标准的 DOM方法(stopPropagation())

当然,DOM方法(stopPropagation())就要考虑兼容问题了,原本是嫌麻烦而用的 IE属性(cancelBubble)。但如今不得不使用 DOM方法(stopPropagation())来阻止冒泡了。


关于 DOM方法(stopPropagation()) 的兼容

阻止事件冒泡:IE属性(cancelBubble)VS DOM方法(stopPropagation())(非技术文,纯属放坑)
即:如今所有主流浏览器均支持 stopPropagation() 方法。
IE浏览器 9+也支持了,而 IE 8及以下,就用 IE属性(cancelBubble) 来兼容。


MDN:event.cancelBubble
MDN:event.stopPropagation