代码之家  ›  专栏  ›  技术社区  ›  Misha Moroshko Amr Mostafa

在Chrome中模拟移动设备时,为什么会以不同的顺序反应火灾事件?

  •  0
  • Misha Moroshko Amr Mostafa  · 技术社区  · 5 年前

    考虑以下文本输入和复选框:

    enter image description here

    <div>
      <div className="field">
        <label htmlFor="name">Name: </label>
        <input
          id="name"
          type="text"
          onBlur={() => {
            console.log("onBlur");
            setTimeout(() => {
              console.log("onBlur next tick");
            });
          }}
        />
      </div>
      <div className="field">
        <input
          id="toggle"
          type="checkbox"
          onChange={() => {
            console.log("onChange");
          }}
        />
        <label htmlFor="toggle">Toggle</label>
      </div>
    </div>
    

    1. 关注名称输入
    2. 单击/点击切换

    在Chrome中 console.log s是:

    onBlur 
    onBlur next tick 
    onChange
    

    但是,当 simulating mobile devices ,订单更改为:

    onBlur 
    onChange
    onBlur next tick
    

    有趣的是,在Firefox中,当模拟移动设备时,顺序没有改变。

    为什么Chrome会发生这种订单变化?这有文件记载吗?

    Codesandbox


    更新:

    我刚刚用纯JavaScript重新创建了相同的示例,结果是一样的: https://jsbin.com/vagoloxebi/edit?html,js,output

    这是Chrome中的一个bug吗?

    0 回复  |  直到 5 年前