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);