Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Webkit和Safari即使在鼠标不移动时也会启动鼠标移动';别动_Javascript_Jquery_Jquery Events_Mousemove - Fatal编程技术网

Javascript Webkit和Safari即使在鼠标不移动时也会启动鼠标移动';别动

Javascript Webkit和Safari即使在鼠标不移动时也会启动鼠标移动';别动,javascript,jquery,jquery-events,mousemove,Javascript,Jquery,Jquery Events,Mousemove,我曾读到过Safari/Webkit中两次触发mousemove事件的问题,但我面临的问题是,即使鼠标未移动,也会触发mousemove。也就是说:当鼠标光标位于加载/刷新页面时事件附加到的上下文上方时,它已经触发。因为我将它附加到文档(浏览器的整个视口),所以它会在Safari中立即启动。我尝试将它附加到html元素、主体和包装器div。没有变化 $(document).bind('mousemove', function() { alert('Mouse moved!'); $(do

我曾读到过Safari/Webkit中两次触发
mousemove
事件的问题,但我面临的问题是,即使鼠标未移动,也会触发
mousemove
。也就是说:当鼠标光标位于加载/刷新页面时事件附加到的上下文上方时,它已经触发。因为我将它附加到
文档
(浏览器的整个视口),所以它会在Safari中立即启动。我尝试将它附加到
html
元素、
主体和包装器
div
。没有变化

$(document).bind('mousemove', function() {
  alert('Mouse moved!');
  $(document).unbind('mousemove');
});

Is在其他浏览器中也可以正常工作。有人看到我做错了什么吗?谢谢。

我知道这是一个肮脏的黑客行为,但至少是这样:只要在第二次启动
mousemove
时执行回调函数即可

var $document = $(document), i = 0;
$document.bind('mousemove', function() {
 if (++i > 1) {
  alert('Mouse moved!');
  $document.unbind('mousemove');
 };
});
演示:


值得一提的是,Safari并不是唯一一款在页面加载时启动
mousemove
的浏览器——IE也这样做。无论如何,使用其他浏览器的人不会注意到“延迟”,因为实际上不可能只移动鼠标一个像素。

我也有同样的问题。Cmd、ctrl-alt、shift和caps-lock也会触发mousemove事件(mac上的safari 4)。在这里尝试一下: