浏览器多久轮询一次鼠标位置?
How often does a browser poll for mouse location?
var mouseTrack = (function() {
document.onmousemove = handleMouseMove;
function handleMouseMove(event) {
var dot, eventDoc, doc, body, pageX, pageY;
event = event || window.event; // IE-ism
// If pageX/Y aren't available and clientX/Y are,
// calculate pageX/Y - logic taken from jQuery.
// (This is to support old IE)
if (event.pageX == null && event.clientX != null) {
eventDoc = (event.target && event.target.ownerDocument) || document;
doc = eventDoc.documentElement;
body = eventDoc.body;
event.pageX = event.clientX +
(doc && doc.scrollLeft || body && body.scrollLeft || 0) -
(doc && doc.clientLeft || body && body.clientLeft || 0);
event.pageY = event.clientY +
(doc && doc.scrollTop || body && body.scrollTop || 0) -
(doc && doc.clientTop || body && body.clientTop || 0 );
}
console.log(event.pageX + ', ' + event.pageY);
// document.body.innerHTML += '<div style="position:absolute;width:3px;height:3px;background:red;right:'+(window.innerWidth-event.pageX)+'px;top:'+event.pageY+'px;"></div>'
}
});
mouseTrack();
(在您的浏览器中试试这个:))
如果您在页面上以高灵敏度快速移动鼠标,您将只能获得 10-20 左右的坐标集。如果你慢慢来,你会积累成百上千的点数。
浏览器(比方说,Chrome)多久轮询一次鼠标位置以触发 mousemove
事件,更好的是,我可以从哪里查看它的来源?
不是浏览器造成的。实际上,浏览器根本不轮询鼠标位置。
这是脚本引擎实现,每个命令都需要一定的执行时间,因此只能每隔这么多微秒比较一次位置。如果检测到更改,则会引发一个事件。
在我看来这里不可能说出具体的时间,因为显然单个命令的执行时间取决于具体的硬件和您测试的系统的负载。
var mouseTrack = (function() {
document.onmousemove = handleMouseMove;
function handleMouseMove(event) {
var dot, eventDoc, doc, body, pageX, pageY;
event = event || window.event; // IE-ism
// If pageX/Y aren't available and clientX/Y are,
// calculate pageX/Y - logic taken from jQuery.
// (This is to support old IE)
if (event.pageX == null && event.clientX != null) {
eventDoc = (event.target && event.target.ownerDocument) || document;
doc = eventDoc.documentElement;
body = eventDoc.body;
event.pageX = event.clientX +
(doc && doc.scrollLeft || body && body.scrollLeft || 0) -
(doc && doc.clientLeft || body && body.clientLeft || 0);
event.pageY = event.clientY +
(doc && doc.scrollTop || body && body.scrollTop || 0) -
(doc && doc.clientTop || body && body.clientTop || 0 );
}
console.log(event.pageX + ', ' + event.pageY);
// document.body.innerHTML += '<div style="position:absolute;width:3px;height:3px;background:red;right:'+(window.innerWidth-event.pageX)+'px;top:'+event.pageY+'px;"></div>'
}
});
mouseTrack();
(在您的浏览器中试试这个:))
如果您在页面上以高灵敏度快速移动鼠标,您将只能获得 10-20 左右的坐标集。如果你慢慢来,你会积累成百上千的点数。
浏览器(比方说,Chrome)多久轮询一次鼠标位置以触发 mousemove
事件,更好的是,我可以从哪里查看它的来源?
不是浏览器造成的。实际上,浏览器根本不轮询鼠标位置。
这是脚本引擎实现,每个命令都需要一定的执行时间,因此只能每隔这么多微秒比较一次位置。如果检测到更改,则会引发一个事件。
在我看来这里不可能说出具体的时间,因为显然单个命令的执行时间取决于具体的硬件和您测试的系统的负载。