2010-06-27 3 views
3

Я пытаюсь сделать google.com, как замирание в (СЕРТ я хочу, чтобы исчезнуть из текста)Jquery MouseMove() активируется без движения мыши

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

С этим кодом, мой Fade Out получает автоматически хотя я не двигал мышь. Случается во всех браузерах. Какие-нибудь советы?

+0

Невозможно воспроизвести в Chrome 5, FF 3.6. –

+0

вот пример http://www.ximnet.com.my/jquery/mousemove.htm – thegreyspot

ответ

5

Поскольку событие срабатывает один раз в начале и 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 
    }); 
});​ 

You can try a demo here, все, что мы делаем, не обращая внимания на очень первый обжиг в mousemove случае, после того, что мы делаем замирание и отвязать этот обработчик так, что он не работает для будущих mousemove стрельб, только уборка ,

+0

Я точно знаю, что Firefox (по крайней мере, 3.x) делает * НЕ * срабатывает автоматическое событие mousemove. Как, иногда, я задавался вопросом, почему поисковая страница Google не выполнила процесс постепенного перехода. Это было, конечно, потому, что я не двигал мышью. Любой браузер, который должен быть исправлен, потому что это просто неожиданное и странное поведение. –

+0

Прохладный ник! Это работает. Странно, хотя в хром, если мышь лежит в области сайта (не перемещается), она активируется. Firefox и IE работают нормально. Ничего страшного. Еще раз спасибо (** желает, чтобы он мог дать плюс один!) @George Marian Я не единственный, у кого проблемы с проверкой http://forum.jquery.com/topic/mousemove-strange-behavior-in-ie Are вы уверены, что Google использует jquery для их угасания? – thegreyspot

+0

Нет, они не используют jQuery: onmousemove = "google && google.fade && google.fade (event)" .... Любая идея о jQuery или, возможно, о различных способах подключения к событиям, которые вызывают это? –

0

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

+0

Хорошо, но у меня нет проблем с другими ситуациями (например, google.com) – thegreyspot

1

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

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

Смежные вопросы