Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么在使用事件冒泡时没有调用无效事件的事件侦听器?_Javascript_Javascript Events - Fatal编程技术网

Javascript 为什么在使用事件冒泡时没有调用无效事件的事件侦听器?

Javascript 为什么在使用事件冒泡时没有调用无效事件的事件侦听器?,javascript,javascript-events,Javascript,Javascript Events,当我尝试将事件侦听器添加到文档的无效事件时,当我使用像这样冒泡的默认事件时,它不会被调用 document.addEventListener("invalid", function (e) { console.log(e.target); }, false); 当我将最后一个参数设置为true时,事件侦听器的调用与预期的一样。多亏了,我想我理解了事件捕获和冒泡之间的区别,但我不明白这如何适用于我的案例。为什么会有不同呢?根据通常是准确的,并且在这种情况下似乎符合实际的无效事件不会冒泡。

当我尝试将事件侦听器添加到文档的无效事件时,当我使用像这样冒泡的默认事件时,它不会被调用

document.addEventListener("invalid", function (e) {
    console.log(e.target);
}, false);

当我将最后一个参数设置为
true
时,事件侦听器的调用与预期的一样。多亏了,我想我理解了事件捕获和冒泡之间的区别,但我不明白这如何适用于我的案例。为什么会有不同呢?

根据通常是准确的,并且在这种情况下似乎符合实际的
无效事件不会冒泡。他们只会开火。

你是如何开火的?提供一个完整的简化测试用例非常有用。我现在有点困惑。请参阅我作为对我的问题的评论发布的JSFIDLE。当我将事件侦听器以相同的方式添加到文本框中,而不是添加到文档中时,它会正常工作。当事件不冒泡时,我必须在捕获阶段捕获它,对吗?但是为什么这个例子会起作用呢?因为事件在输入上触发,而您正在监听输入。不涉及冒泡(这是当事件在每个元素上触发时向上传递DOM树时)。因此,当我将事件侦听器添加到文档中时,如果启用冒泡,它将从目标(无效控件)冒泡到文档中?我首先认为,当将侦听器附加到文档时,不会出现冒泡,因为它已经是最顶层的元素。这就是我不明白的原因。事件是否总是从e.target向上或向下捕捉到事件侦听器连接到的元素?仅在输入上,而不是在
元素上(如您的答案的最后一句话所述)。