如何在保留鼠标/元素坐标访问权限的同时将鼠标移动更改为 setInterval
How can I change the mousemove to setInterval while retaining mouse/element coordinate access?
>我想将其更改为setInterval,但我不知道如何在保持对e.pageX,e.pageY,elem等的访问的同时执行此操作。如何将其更改为 setInterval(或者 jquery 中是否有一个事件与 setInterval 执行相同的操作,但是一个事件)?
http://jsfiddle.net/f1Lzqxom/
$(function(){
$(document).on( "mousemove", MouseMove );
var cachedElems = $( '.tracker' );
function MouseMove(e){
var pageX = e.pageX,
pageY = e.pageY;
$.each(cachedElems, function(i,elem){
elem = $(elem);
var elemX = pageX - elem.offset().left,
elemY = pageY - elem.offset().top;
$(elem).text(
'page x: ' + pageX + ''n' +
'page y: ' + pageY + ''n' +
''n' +
'elem x: ' + elemX + ''n' +
'elem y: ' + elemY + ''n'
);
});
}
});
更改...
function MouseMove(e){
...
}
。自。。。
$(document).mousemove(function(e){
window.mouseXPos = e.pageX;
window.mouseYPos = e.pageY;
});
上面的代码会将鼠标移动附加到全局变量,您可以在setTimeout
中引用这些全局变量。
setInterval(function() {
var pageX = window.mouseXPos,
pageY = window.mouseYPos;
$.each(cachedElems, function(i,elem){
elem = $(elem);
var elemX = pageX - elem.offset().left,
elemY = pageY - elem.offset().top;
$(elem).text(
'page x: ' + pageX + ''n' +
'page y: ' + pageY + ''n' +
''n' +
'elem x: ' + elemX + ''n' +
'elem y: ' + elemY + ''n'
);
});
}, 1000);
。变量声明 pageX
和 pageY
的微小变化以使用新的全局变量。
注:
在提供了我所做的答案后,即使您只是轮询光标位置,我也会小心使用文档级、始终运行的mousemove
事件。这是大量的处理,可能会使任何浏览器陷入困境,尤其是像IE这样速度较慢的浏览器。
像这样的问题几乎肯定会引发设计决策的问题:如果您不需要处理鼠标事件来轮询光标位置,那么您真的需要光标位置吗?有没有更好的方法来解决您要解决的问题?
更新:
可以通过这种方式停止设置的间隔。
var intervalId = setInterval(function() {
...
}, 1000);
/* Later */
clearInterval(intervalId);
相关文章:
- js:停止鼠标移动
- Zingchart-平移键和鼠标移动
- 在鼠标上触发鼠标移动'的当前位置
- 当用户将鼠标移到屏幕/图表上时,自动滚动将暂停.如果鼠标移动停止,自动滚动将再次恢复
- 如何在谷歌地图上用鼠标移动标记
- 如何在鼠标移动事件时更改图像的窗口中心和宽度
- 如何模仿鼠标移动和事件
- 鼠标点击不会'不起作用,鼠标移动可以
- 有没有办法提高鼠标移动的分辨率
- 如何在JS中随机化backgroundPosition而不使用鼠标移动来制作万花筒的动画
- 如何使用onmousemove函数在每次鼠标移动时更改背景图像
- 使用jQuery/CSS设置的鼠标光标在鼠标移动之前不会更改
- 在谷歌地图中用鼠标移动标记
- 在HTML5画布中绘制鼠标移动的半透明线条
- 如何使用Protractor/Senium将鼠标移动到任意点
- 防止鼠标移动对elementFromPoint的攻击
- 如果鼠标悬停得很快,Jquery鼠标移动会错过一些单元格
- 检查人员是否通过鼠标移动离开网站
- 使用鼠标移动操作选择选项
- 如何在D3Javascript中将鼠标移动到节点上时显示和隐藏节点