2

对于我创建的SlyZoom 扩展,我想实现一个虚拟滑块:一个 XUL/XBL 元素,它充当一个小的静态区域,在mousedown该区域中,鼠标指针变为ew-resize,我捕获mousemove事件以检测水平移动,以更改当前缩放级别。

到目前为止,我已经实现了一个暂定的解决方案,使用标准MouseEvent API并利用非常方便的MouseEvent.mozMovementX ,即使我不使用Pointer Lock API似乎也存在。

在此示例图像中,您会看到 (Xubuntu)ew-resize鼠标指针在临时虚拟滑块上,这是一个区域,鼠标指针后面有一个小的黑色双箭头,位于左侧<menulist>

虚拟滑块示例

此图像的右侧是屏幕的右边缘;左侧被简单地裁剪。

但是,正如您所见/想象的那样,鼠标指针很可能会在用户达到令人满意的缩放级别之前定期到达用户屏幕的边缘。在这些情况下,不幸MouseEvent.mozMovementX的是,即使物理指针设备仍在移动,它也会简单地保持为零。

我试图通过使用 Pointer Lock API 来规避这个问题。但是,指针锁定 API 似乎不适用于 XUL/XBL 文档。那是对的吗?或者指针锁 API 是否也应该适用于 XUL/XBL 文档?

在任何情况下,即使 Pointer Lock API我的 XBL 元素有效,它也会隐藏鼠标指针,这是不可取的。虽然我想在这种情况下我可以尝试创建一个人造鼠标指针,但恐怕这相当麻烦并且容易出现不稳定的行为。

所以我的问题归结为:

如何在 XUL/XBL 文档中正确检测超出屏幕边缘的鼠标移动增量?这可能吗?

4

0 回答 0