无论出于何种原因,原本在Chrome中,mousemove
事件之后立即跟随mousedown
事件发生的mousedown
事件没有被触发或完全被忽略一小段时间(500-1000ms?)。
奇怪的是,这个问题在codepen上是不存在的(在Chrome上也是如此)并且代码完全相同...... Firefox,Edge等也没有问题,仅在Chrome上本身存在。
Here is a codepen nonetheless.为自己测试一下。
将此代码复制并粘贴到实际的.html,.css和.js文件中,然后直接在浏览器中运行它,您会注意到paper.onmousemove
在window.resize
事件发生很短时间后不会立即触发或注册。
这没有任何意义!
有人知道发生了什么事吗?为什么它在codepen(和其他所有浏览器)中都能正常工作,而不是直接在浏览器中工作?!
我发现了一个与codepen版本有关的问题,它会产生一个非常类似的错误(但在开头会涉及一些额外的步骤)。
但是,在这种情况下,在codepen上mousedown
没有触发,而如果直接在浏览器中查看,则mousemove
不会触发。同样,存在差异,这非常奇怪。
事实证明它只发生在开发者控制台打开时,这就是为什么它没有在codepen中发生。
这似乎与Chrome DevTools有点奇怪。您描述的错误似乎只发生在DevTools打开时。当你关闭DevTools时它会消失。这可能只是一个奇怪的巧合,但它会在右上角的分辨率标签消失时立即开始记录mousemove
事件。
话虽这么说,你有onmousemove
和addEventListener
的组合继续。例如,你有两个
paper.addEventListener('mouseup', checkMouseUp)
和
paper.onmouseup = function(event) {}
我不确定它是否是DevTools问题的原因,但这可能导致意想不到的后果,因为paper
现在有两个单独指定的mouseup
函数。在你的情况下,我只是坚持使用addEventListener
。