Javascript 检索事件处理程序外部的鼠标位置
如何在鼠标的已分配事件处理程序函数之外检索鼠标位置 例如,如果Javascript 检索事件处理程序外部的鼠标位置,javascript,dom,mouse,Javascript,Dom,Mouse,如何在鼠标的已分配事件处理程序函数之外检索鼠标位置 例如,如果Event.MOUSEMOVE=somefuction,我该如何说 someOtherFunction( maybeSomeParams ) { getCurrentMouseLocn(); } 或 最简单的方法是捕获鼠标移动事件并将位置保存到全局变量 如果已捕获,您可以执行以下操作: var oldFunction = document.onmousemove; document.onmousemove = functio
Event.MOUSEMOVE=somefuction
,我该如何说
someOtherFunction( maybeSomeParams )
{
getCurrentMouseLocn();
}
或
最简单的方法是捕获鼠标移动事件并将位置保存到全局变量 如果已捕获,您可以执行以下操作:
var oldFunction = document.onmousemove;
document.onmousemove = function(e)
{
// save x & y here...
return oldFunction(e);
}
使用jQuery,您可以在任何事件中设置鼠标位置:
$('#example').click(function(e){
var x = e.pageX;
var y = e.pageY;
// ...
});
更多信息请点击此处:
这会有所帮助。否则,请使用mousemove事件将最新位置x/y存储在全局变量中。不幸的是,无法在事件处理程序外部检索鼠标光标的位置。您可以选择为onmousemove事件注册一个事件处理程序,并将坐标存储在一个全局(ish)变量中 使用普通的旧javascript,下面的代码应该可以实现Safari和FF3的功能
var coords = {x: NaN, y: NaN};
...
if (coords.x === ... && coords.y === ...) {
/* insert your magic here */
}
...
window.addEventListener('mousemove', function(e) {
coords.x = e.clientX;
coords.y = e.clientY;
}, true);
简而言之,为“onmousemove”事件注册了一个事件侦听器(处理程序)。当事件触发时,将使用该事件调用匿名函数。该事件包含多个属性,其中两个是clientX和clientY。这些是鼠标相对于窗口的坐标,而不是文档顶部的坐标。这些坐标放置在一个变量中,处理程序和需要坐标的代码都可以访问该变量。这可能是一个全局变量或某种闭合变量
我应该注意到,浏览器中的javascript实现通常是单线程的。简单地说,这意味着如果自上次调用事件处理程序以来鼠标一直在移动,
coords
变量中包含的值可能并不总是最新的。Ooh,你说得对!我没有完全理解这个问题。在这种情况下,一种方法是使用全局变量。
var coords = {x: NaN, y: NaN};
...
if (coords.x === ... && coords.y === ...) {
/* insert your magic here */
}
...
window.addEventListener('mousemove', function(e) {
coords.x = e.clientX;
coords.y = e.clientY;
}, true);