我正在寻找一小段javascript来检查鼠标的移动情况以及它确实执行了一个功能。我希望这样做没有jquery ,并且最好与大多数现代浏览器兼容。我有一个小脚本,可以检测鼠标何时没有移动:
<script>
document.onmousemove = (function() {
var onmousestop = function() {
/* do stuff */
}, thread;
return function() {
clearTimeout(thread);
thread = setTimeout(onmousestop, 500);
};
})();
</script>
我希望在加载脚本后第一次移动鼠标时可以将事情编辑成触发器吗?有帮助吗?感谢
答案 0 :(得分:11)
Amit's solution的问题在于它删除了所有现有的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);
答案 1 :(得分:1)
(function(){
var moved = false
window.onmousemove = function(e){
if(!moved){
moved = true;
// do what you want after mousemove, here
}
}
})()