Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.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 为什么不';t复选框输入更改事件?_Javascript_Web Component - Fatal编程技术网

Javascript 为什么不';t复选框输入更改事件?

Javascript 为什么不';t复选框输入更改事件?,javascript,web-component,Javascript,Web Component,我发现由生成的change事件将composite设置为false(至少在Chrome 80上) Event.composited标志确定事件是否跨阴影DOM边界传播。Mozilla()上的Event.composited文档说明: 所有UA调度的UI事件都是由 (单击/触摸/鼠标覆盖/复制/粘贴等) 那么,composited=false是输入更改事件的预期行为吗 这是否记录在规范中(我试图找到它但没有成功) 如果这是预期的行为,那么对于更改,而对于组合=真,比如说单击,其基本原理是什么 谢谢

我发现由
生成的
change
事件将
composite
设置为
false
(至少在Chrome 80上)

Event.composited
标志确定事件是否跨阴影DOM边界传播。Mozilla()上的
Event.composited
文档说明:

所有UA调度的UI事件都是由 (单击/触摸/鼠标覆盖/复制/粘贴等)

那么,
composited=false
是输入更改事件的预期行为吗

这是否记录在规范中(我试图找到它但没有成功)

如果这是预期的行为,那么对于
更改
,而对于
组合=真
,比如说
单击
,其基本原理是什么

谢谢,
Adam

以下内容逐字摘自本文:


影子DOM事件模型 ---当一个事件从shadowdom冒泡出来时,它的目标被调整以保持shadowdom提供的封装。就是, 事件被重新定位,使其看起来像来自组件 而不是阴影DOM中的内部元素。有些活动确实如此 甚至不能从阴影DOM中传播

确实跨越阴影边界的事件有:

  • 聚焦事件:模糊、聚焦、聚焦输入、聚焦输出
  • 鼠标事件:单击、dblclick、mousedown、mouseenter、mousemove等
  • 车轮事件:车轮
  • 输入事件:输入前,输入
  • 键盘事件:向下键、向上键
  • 合成事件:合成开始、合成更新、合成结束
  • DragEvent:dragstart、drag、Dragen、drop等

对于规范,更改事件不是InputEvent或UIEvent的实例:。这是一个事件的实例

至于为什么它不能从影子DOM中冒泡出来的原因,恐怕我不能给出太多的肯定。我所能说的是,更改事件并不像事件“input”那样直接指向用户操作,而是指向HtmleElement值的更改。我认为只有被认为是用户行为的事件才会冒泡出来


编辑以包含更多参考资料:


以下是关于规范变更理由的讨论:

谢谢。Re:spec,您说“变更事件不是InputEvent或UIEvent的实例”,但spec是否说过只有
InputEvents
UIEvents
从阴影Dom中冒泡出来?Re:基本原理,您说“只有被认为是用户操作的事件才会冒泡出来”,但在中,
change
input
事件在用户操作方面具有相同的状态,只是在发生时有所不同:修改(
input
)或提交(
change
)。不想争论,只是想理解…没问题,很高兴讨论。我在您引用的规范中对以下内容的解释是:“只要用户修改了控件的数据,就会触发输入事件。提交值时就会触发更改事件”,正如我所说;输入事件考虑用户动作/UI事件,而更改事件不为。我还刚刚对答案进行了编辑,其中包括我引用的规范更改背后的基本原理(合成属性的添加,以及它应该为真的事件)。我看到也提出了这个问题,不知道这是否是巧合:)。对于浏览器应该实现什么,似乎存在一些困惑。如果它有助于您的用例,请不要忘记,您可以自己手动重新确定事件的目标。如果附加阴影的模式是关闭的,这将更加困难,但并非不可能。