6

mousemoveSafari / Webkitでイベントが2回発生する問題について読んだことがありますが、私が直面している問題mousemoveは、マウスを動かさなくても発生するということです。つまり、ページがロード/更新されたときにイベントがアタッチされているコンテキストの上にマウスカーソルが置かれると、すでに起動しています。そして、私はそれをdocument(ブラウザのビューポート全体)にアタッチしているので、Safariですぐに起動します。html要素、bodyおよびラッパーにアタッチしようとしましたdiv。変化なし。

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

他のブラウザでも問題なく動作しますか。私が間違っていることを見ている人はいますか?ありがとう。

4

1 に答える 1

1

私はそれが汚いハックであることを知っています、しかし少なくともこれは何かです:単に2回目に呼び出されたコールバック関数を実行しますmousemove

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

デモ: http: //fiddle.jshell.net/Yz5Bd/show/light/

mousemove価値のあることとして、ページの読み込み時に起動するブラウザはSafariだけではありません。IEもそれを実行します。とにかく、他のブラウザを使用している人は、マウスを1ピクセルだけ動かすことは事実上不可能であるため、「遅延」に気付くことはありません。

于 2010-04-22T09:34:12.483 に答える