Реакция браузеров на событие scroll
Здравствуйте, я пишу вот такую функцию.
$(window).scroll(function(){ alert("Ехал Грека через реку"); }); Браузеры Мозила и Опера неадекватно реагируют на прокрутку, всплывает окно и в нём надо раз 15 нажать OK, а в браузерах IE и Гугл всё отображается хорошо. От чего это зависит? |
Зависит от реализации alert.
|
Ааа! То есть это реакция на метод alert, а не на событие scroll.
Всё ясно, спасибо. |
в смысле зависит от реализации alert?? давайте изменим немного код..:
var i = 0; $(window).scroll(function(){ i++; }); а потом выведем значение i в хроме и опере.. в хроме будет 1, а в опере около 20.. имхо тут далеко дело не в алерте... |
skrudjmakdak, бредите.
i будет столько - сколько раз вызвана scroll, а вызываться она будет до тех пор пока вы сколлите. КО. |
ммм)) видимо мы друг друга не понимаем. я один раз крутонул колесико в двух браузерах.. а числа разные..
т.е. в опере за один "щелчек" скролл вызывается около 20 раз, но там можно заметить, что скролит анимированно (т.е. каждый шаг вызывает событие). а в хроме перескакивает за 1 раз возможно этим и можно объяснить вот это все.. |
Объяснить конечно можно, но с этом всё равно-же ничего не поделать.
Событие .scroll очевидно по разному обрабатывается разными браузерами. Позже буду рассматривать .scroll на других примерах, посмотрю как в них будет работать. |
Цитата:
Скролл вызывается столько раз сколько происходит перерисовок. Соответственно в данном случае в опере отрисовавыется практически попиксельно, а в хроме куском. И это совершенно не значит, что у другого пользователя, с другими настройками не будет иначе. Это должно быть очевидно, и ждать от скролла другого поведения - странно. Привязываться же к количеству вызовов вообще бессмыслено - призываться надо к проскролленому расстоянию. По поводу же alert: нормальный alert должен моментально стопарить работу в конкретном окне. То что успевает настековаться куча алертов - имхо бага. |
Проблему-то решили? Объясните, пожалуйста. Не могу сообразить как "алерт" вывести один раз в любых браузерах. В опере 20 раз выскакивает, а нужно один.
var ScrollTop = 0, Top = 0; $('#div').scroll(function(){ Top = $('#div').scrollTop(); if (ScrollTop < Top){ alert('Какая-то функция');//крутим колесо вниз } else if (ScrollTop > Top) { alert('Какая-то функция');//крутим колесо вверх } ScrollTop = Top; }); |
|
Часовой пояс GMT +3, время: 16:25. |