在window.resize事件之后,Mousemove事件未注册

问题描述 投票:2回答:1

无论出于何种原因,原本在Chrome中,mousemove事件之后立即跟随mousedown事件发生的mousedown事件没有被触发或完全被忽略一小段时间(500-1000ms?)。

奇怪的是,这个问题在codepen上是不存在的(在Chrome上也是如此)并且代码完全相同...... Firefox,Edge等也没有问题,仅在Chrome上本身存在。

Here is a codepen nonetheless.为自己测试一下。

将此代码复制并粘贴到实际的.html,.css和.js文件中,然后直接在浏览器中运行它,您会注意到paper.onmousemovewindow.resize事件发生很短时间后不会立即触发或注册。

这没有任何意义!

有人知道发生了什么事吗?为什么它在codepen(和其他所有浏览器)中都能正常工作,而不是直接在浏览器中工作?!

我发现了一个与codepen版本有关的问题,它会产生一个非常类似的错误(但在开头会涉及一些额外的步骤)。

  1. 通过在白色区域上拖动鼠标来创建元素
  2. 单击选择该元素
  3. 将该元素拖到页面上的任何位置
  4. 调整浏览器大小并立即尝试通过拖动创建另一个元素

但是,在这种情况下,在codepen上mousedown没有触发,而如果直接在浏览器中查看,则mousemove不会触发。同样,存在差异,这非常奇怪。

Update

事实证明它只发生在开发者控制台打开时,这就是为什么它没有在codepen中发生。

javascript google-chrome events
1个回答
2
投票

这似乎与Chrome DevTools有点奇怪。您描述的错误似乎只发生在DevTools打开时。当你关闭DevTools时它会消失。这可能只是一个奇怪的巧合,但它会在右上角的分辨率标签消失时立即开始记录mousemove事件。

话虽这么说,你有onmousemoveaddEventListener的组合继续。例如,你有两个

paper.addEventListener('mouseup', checkMouseUp)

paper.onmouseup = function(event) {}

我不确定它是否是DevTools问题的原因,但这可能导致意想不到的后果,因为paper现在有两个单独指定的mouseup函数。在你的情况下,我只是坚持使用addEventListener

© www.soinside.com 2019 - 2024. All rights reserved.