根据quirksmode,现代浏览器具有捕获阶段和冒泡阶段。见here.
如果我在我的事件处理程序中使用stopPropagation(通过布尔参数设置为任一阶段)它将如何运作?
两种方式都有效吗?也就是说,如果我将其设置为捕获模式,它还会阻止冒泡阶段。反之亦然。
这是W3参考(stopPropagation)。
我正在对事件处理程序进行故障排除,并且需要准确了解stopPropagation()
的功能。
答案 0 :(得分:5)
在捕获阶段停止传播将阻止更多处理程序运行,包括在冒泡阶段注册的处理程序。
W3C documentation on event flow说(强调我的):
此规范定义了三个事件阶段:捕获阶段; 目标 相;和泡沫阶段。事件对象完成了这些阶段 使用如下定义的部分传播路径指定的顺序。 如果不支持,或者事件发生,则必须跳过某个阶段 对象的传播已经停止。例如,如果
Event.bubbles
属性设置为false,泡沫阶段将为 跳过,如果Event.stopPropagation()
之前已被调用过 发送,必须跳过所有阶段。