从什么时候div支持`onchange`事件,它是一个bug吗?

Dig*_*nja 1 html javascript html5

我只是意外地将一个div包含单选按钮的东西绑定到一个onchange事件,而不是其中的实际单选按钮,并发现该事件仍然被触发.我现在在Firefox和Webkit浏览器中运行了下面的小提琴,他们都工作了.

由于我以前从未见过或听说过这个,我现在想知道这是否有意,是新的,是否可以在生产中使用它并期望它可以在所有(或更旧的)浏览器中使用?MDNW3schools都没有提到该onchange事件的非输入元素.

小提琴:https://jsfiddle.net/4cjdy9do/

T.J*_*der 5

div没有自己的 change事件,但change 泡沫.(这不是新的.)从您链接的MDN页面:

泡泡:是的

因此,您将看到包含or的change任何元素(不仅仅是div),只要不阻止事件冒泡.inputselectstopPropagation

例如,您可以监视所有(非停止)change事件document,因为它们的原始目标元素存在:

document.addEventListener("change", function(e) {
  console.log("Got change, new value: " + e.target.value);
});
Run Code Online (Sandbox Code Playgroud)
<div>
  <label>
    One:
    <input type="text">
  </label>
</div>
<div>
  <label>
    Two:
    <input type="text">
  </label>
</div>
<div>
  <label>
    Three:
    <select>
      <option>ay</option>
      <option>bee</option>
      <option>see</option>
    </select>
  </label>
</div>
Run Code Online (Sandbox Code Playgroud)