【问题标题】:How often does a browser poll for mouse location?浏览器多久轮询一次鼠标位置?
【发布时间】:2015-08-28 05:49:48
【问题描述】:
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 事件,甚至更好的是,我可以在哪里查看此事件的来源?

【问题讨论】:

  • 我注意到静止鼠标生成的事件似乎与文本输入字段中的 I 光束闪烁的频率相同。我想您会发现,对于移动的鼠标,事件是在底层操作系统报告时生成的。轮询与 goto 语句一样邪恶(一般而言)。

标签: javascript google-chrome events browser mousemove


【解决方案1】:

导致此效果的不是浏览器。实际上,浏览器根本不轮询鼠标位置。

脚本引擎实现每个命令都需要一定的执行时间,因此只能每隔几微秒比较一次位置。如果检测到更改,则会引发事件。

在我看来,这里不可能说出具体的时间,因为显然单个命令的执行时间取决于您测试的系统的具体硬件和负载。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-21
    • 2011-07-28
    • 1970-01-01
    • 2013-02-02
    • 2011-04-20
    • 2011-07-11
    相关资源
    最近更新 更多