Jquery mousemove () активируется без движения мыши - PullRequest
3 голосов
/ 28 июня 2010

Я пытаюсь сделать google.com похожим (добавить, что я хочу исчезнуть текст)

<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>
  $(document).ready(function() {
    $("html").mousemove(function () {
      $("p").fadeOut("slow");
    });
  });
</script>

С этим кодом мое затухание автоматически активируется, хотя я не перемещал мышь. Бывает во всех браузерах. Любые советы?

Ответы [ 3 ]

5 голосов
/ 28 июня 2010

Поскольку событие запускается один раз изначально и mousemove срабатывает каждый раз, когда вы перемещаете его на пиксель, вы можете просто проигнорировать самое первое (возможно, автоматическое, в зависимости от браузера) mousemove событие, чтобы получить желаемый эффект, например:

$(function() {
  var moveCount = 0;
  $("html").mousemove(function () {
    if(moveCount++ === 0) return; //first run?
    $("p").fadeOut("slow");
    $(this).unbind('mousemove'); //unbind this, no need to stick around
  });
});​

Вы можете попробовать демо здесь , все, что мы делаем, это игнорируем очень первое срабатывание события mousemove, после чего мысделайте затухание и снимите привязку с этого обработчика, чтобы он не работал для будущих mousemove срабатываний, а только для очистки.

1 голос
/ 04 июля 2010

Похоже, что если страница загружается и на странице присутствует мышь, то она запускает событие. Попробуйте скрыть мышь от страницы, оставив ее над адресной строкой или где-нибудь над меню в верхней части браузера, обновите страницу с помощью F5 и обратите внимание, что событие не запускается. Аналогичным образом попробуйте обновить с помощью F5 и сразу щелкните правой кнопкой мыши на странице. Наведите курсор на страницу, но убедитесь, что контекстное меню все еще открыто. Как только страница загрузится, вообще не двигая мышью, нажмите клавишу Escape на клавиатуре, чтобы мышь вышла из контекстного меню и вернулась на страницу. Мышь не двигалась, но была обнаружена на странице, и событие инициируется.

Проверено в Chrome 5 на Windows 7. Лень попробовать другой браузер, но я предполагаю, что это то же самое.

0 голосов
/ 28 июня 2010

Вы уверены, что нет «микро движений»?Иногда оптическая мышь может заставить движения регистрироваться только с пылью или грязью.

...