Amit's solution存在的问题是它会移除任何现有的mousemove监听器。而且,当鼠标首次移动时,它不会进行清理,从而创建不必要的开销。
以下是更加简洁的解决方案:
var myListener = function () {
document.removeEventListener('mousemove', myListener, false);
};
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);
};
addListener(document, 'mousemove', myListener);