为什么Chrome浏览器中onchange事件在onclick事件之前触发?

4

我会继续利用这个社区的专业知识和可用性。
我的问题是:如果我们有一段类似于以下代码的代码:

<input name="" type="checkbox"  onClick="first()" onChange="second()">
<script type="text/javascript">
function first(){
    console.log('first')
    }
function second(){
    console.log('second')
    }
</script>

在 Firefox 中,单击事件 onclick 在 onchange 之前触发,而在 Chrome 中则相反。感谢您的回答,也许我没有用最好的方式解释清楚。我知道使用 onMuseDown 可以解决这个问题,但我想了解 Chrome 在 onchange 和 onclick 事件方面出现这种行为的原因。

你为什么想要同时使用它们?我更喜欢在复选框上使用onClick以实现跨浏览器的一致性。顺序取决于浏览器的实现,参见:https://dev59.com/Xm035IYBdhLWcg3wMM4G - Irvin Dominin
Chrome会按照事件遇到的顺序触发它,使用onChange="second()" onClick="first()"将会颠倒它。 - Kyle Needham
@KyleNeedham:感谢您的回答,但是如果我在我的Chrome版本中反转事件,结果仍然是一样的。 - Devima
2个回答

1
因为 onChange 是由于 onClick 触发的。

1

一个不太优美的解决方案可能是使用onMouseDown而不是onClick

但我也想知道为什么你真的需要两者同时使用 ;)


我知道使用onMouseDown代码可以工作,但我想了解这种行为的原因,谢谢回答。 - Devima

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接