我想在经过3D变换的画布上绘图,但是在Chrome浏览器中鼠标移出事件存在一些奇怪的问题。
当我将JSFiddle窗口大小设置为2100像素时,鼠标移出事件按预期工作。
然而,当我将窗口大小设置为1900像素时,鼠标事件大约在红色线条处触发。这真的很奇怪,因为JSFiddle窗口大小决定了鼠标移出事件是否能够正确触发。
在Firefox和Edge中,直到此处鼠标移出事件都能够被正确触发,但在Chrome中无法正常工作!此外,在滚动位置(例如添加一些<br>
并滚动会影响鼠标移出事件位置)、窗口大小(参见上面的图像)或画布宽度(例如将画布宽度设置为200能够正确触发鼠标移出事件)方面我们看到了一些奇怪的行为。
有人能帮我解决这个bug吗?使浏览器能够独立于窗口大小或滚动位置正确地触发mouseout事件?
代码: JSFiddle
演示: YouTube
fiddle中的代码片段:
$(".dynamic-drawing-canvas").on("mouseout", function(e) {
console.log(e.clientX, e.clientY)
})
#container {
pointer-events: none;
margin-left: 400px;
}
.dynamic-drawing-canvas {
pointer-events: auto;
background-color: blue;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="container">
<canvas class="dynamic-drawing-canvas" width="1200" height="300" style="
transform: matrix3d(1.0303, 0.00317459, 0, 2.13211e-05, -0.68458, -0.165542, 0, -0.00111181, 0, 0, 1, 0, -34.7412, 264.118, 0, 1);
transform-origin: left top;
"></canvas>
</div>