Amit 解决方案的问题在于它删除了任何现有的 mousemove 侦听器。此外,第一次移动鼠标时它不会清理,因此会产生不必要的开销。
这是这样做的干净方式:
var myListener = function () {
document.removeEventListener('mousemove', myListener, false);
// do stuff
};
document.addEventListener('mousemove', myListener, false);
在行动中看到它:http: //jsfiddle.net/JQBmA/
如果您需要支持较旧的 IE,可以使用以下命令:
var addListener, removeListener;
if (document.addEventListener) {
addListener = function (el, evt, f) { return el.addEventListener(evt, f, false); };
removeListener = function (el, evt, f) { return el.removeEventListener(evt, f, false); };
} else {
addListener = function (el, evt, f) { return el.attachEvent('on' + evt, f); };
removeListener = function (el, evt, f) { return el.detachEvent('on' + evt, f); };
}
var myListener = function () {
removeListener(document, 'mousemove', myListener);
// do stuff
};
addListener(document, 'mousemove', myListener);