捕获浏览器窗口外的鼠标位置

Capturing mouse position outside of browser window?

本文关键字:鼠标 位置 窗口 浏览器      更新时间:2023-09-26

在浏览器中创建沉浸式体验(使用WebGL等)的一个主要障碍是对鼠标控制的限制。

例如,第一人称射击游戏的控制方案本质上要求程序抓住鼠标并将其重新居中,从而允许光标在任何方向上无限移动。这是一个禁忌,因为它会给网络程序员太多的控制权。希望有一天我们能看到一个插件,允许网站请求移动鼠标的权限,以允许这种行为。

然而,我认为有一些方法可以改善事情,而不必走得太远。我想知道是否有可能允许访问鼠标位置,一旦鼠标移出窗口(焦点仍在窗口上)?

我正在玩这个游戏使用谷歌浏览器:http://www.chromeexperiments.com/detail/x-wing/?f=

,我最大的问题是,要到达一个角落,我必须小心地保持我的鼠标在浏览器窗口的角落。如果我把它从窗口推下去,我的飞船就会停留在鼠标最后一个窗口的位置,而不是在角落里。我就会撞到墙上。

为了使它更好,当鼠标在窗口外时,浏览器应该能够接收鼠标更新。在这种类型的游戏中,如果鼠标离开窗口,它应该继续向浏览器发送更新的位置。

对此有任何规定吗?

回答你的问题,不,你不能从窗口外获得鼠标事件(包括其位置)。

有鼠标锁定API,它是专门为您描述的情况设计的。它将光标锁定在当前窗口。支持现在几乎不存在,但总有一天…!

提示:

 function thumb_mouse_down(e) {
                       e.target.setCapture();
                       return false;
                   }
 function doc_mouse_up(e) {
                        e.target.releaseCapture();
}

setCapture()做到了。下面是一个工作示例:

这似乎是一个比允许开发人员重新定位光标更大的安全问题。答案是否定的,没有这样的东西。而且可能永远都不会有。对不起!

Update:当然,我说的是窗外的捕获,这将是一个问题。很有可能会有一个API来锁定鼠标,也许是在请求用户的许可之后。正如nickf指出的,他们已经在做了-https://www.w3.org/TR/pointerlock/

原始失效链接- http://dvcs.w3.org/hg/webevents/raw-file/default/mouse-lock.html