Mousemoveイベントからの減速を減らすにはどうすればよいですか?
-
27-10-2019 - |
解決
Mousemoveを設定してもらいます innerHTML
変数への文字列、また、実行可能な場合は、要素に直接プレーンドムマウスモーブイベントを使用します。見る http://bugs.jquery.com/ticket/4398
!function () {
var buffer = null;
elem.onmousemove = function () {
buffer = value;
};
!function k() {
if (buffer) {
span.innerHTML = buffer;
buffer = null;
}
setTimeout(k, 100);
}();
}();
現在、Mousemoveイベントはほとんど作業を行いません(内側のHTMLの設定は多くの作業です)、スパンは毎秒10回更新されます。
他のヒント
スパンのテキストノードを変更すると、innerhtmlを変更するよりもはるかに効率的になります。
function mouseMoveAction(ev) {
span.firstChild.data = new Date.toString();
}
ただし、テキストノードが要件を満たさず、Mousemoveでinnerhtmlが必要な場合は、Mousemoveハンドラーにしきい値を作成できます。
/* Keep CPUs to a minimum. */
var MOUSE_MOVE_THRESHOLD = 25,
lastMouseMoveTime = -1;
function mousemoveCallback(ev) {
var now = +new Date;
if(now - lastMouseMoveTime < MOUSE_MOVE_THRESHOLD)
return;
lastMouseMoveTime = now;
mouseMoveAction(ev);
}
JQueryなどを避けてください。彼らは不必要に物事をずっと遅くし、もっと複雑にします。
所属していません StackOverflow