質問

私はどこで問題について読みました mousemove イベントはsafari/webkitで2回発射されますが、私が直面している問題は mousemove マウスがそうであっても火災 いいえ 動いた。つまり、マウスカーソルがページがロード/更新されたときにイベントが添付されているというコンテキストの上に配置されている場合、すでに発火します。そして、私はそれを取り付けているからです document (ブラウザのビューポート全体)、サファリですぐに発射されます。私はそれをに取り付けようとしました html 要素、に body そしてラッパーに div. 。変化なし。

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

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

役に立ちましたか?

解決

私はそれが汚いハックであることを知っていますが、少なくともこれは何かです: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/

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top