【问题标题】:Why onchange fires before onclick in Chrome?为什么 onchange 在 Chrome 中的 onclick 之前触发?
【发布时间】:2014-06-08 04:30:31
【问题描述】:

我仍然会利用这个社区的专业知识和可用性。
我的问题是:为什么如果我们有类似的代码

<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 可以解决问题,但我想通过 onchange 和 onclick 事件了解 Chrome 中这种行为的原因

【问题讨论】:

  • 为什么要同时使用它们?我更喜欢 onClick 复选框以实现跨浏览器的一致性。顺序取决于浏览器实现,另请参阅:stackoverflow.com/questions/5575338/…
  • Chrome 会按照遇到的顺序触发事件,onChange="second()" onClick="first()" 会反转它。
  • @KyleNeedham:谢谢你的回答,但如果我在我的 chrome 版本中反转事件,结果仍然是一样的

标签: javascript events


【解决方案1】:

因为onChangeonClick触发

【讨论】:

    【解决方案2】:

    一个肮脏的解决方案可能是使用onMouseDown 而不是onClick

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

    【讨论】:

    • 我知道使用 onMouseDown 代码可以工作,但我想了解这种行为的原因,感谢您的回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-13
    • 1970-01-01
    • 2018-11-14
    • 1970-01-01
    • 1970-01-01
    • 2013-08-15
    • 1970-01-01
    相关资源
    最近更新 更多