Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.04.2013, 13:57
Аватар для Алек
Аспирант
Отправить личное сообщение для Алек Посмотреть профиль Найти все сообщения от Алек
 
Регистрация: 14.04.2013
Сообщений: 85

Реакция браузеров на событие scroll
Здравствуйте, я пишу вот такую функцию.
$(window).scroll(function(){
alert("Ехал Грека через реку");
});
Браузеры Мозила и Опера неадекватно реагируют на прокрутку, всплывает окно и в нём надо раз 15 нажать OK, а в браузерах IE и Гугл всё отображается хорошо.
От чего это зависит?
Ответить с цитированием
  #2 (permalink)  
Старый 16.04.2013, 14:18
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,585

Зависит от реализации alert.
__________________
29375, 35
Ответить с цитированием
  #3 (permalink)  
Старый 16.04.2013, 14:24
Аватар для Алек
Аспирант
Отправить личное сообщение для Алек Посмотреть профиль Найти все сообщения от Алек
 
Регистрация: 14.04.2013
Сообщений: 85

Ааа! То есть это реакция на метод alert, а не на событие scroll.
Всё ясно, спасибо.
Ответить с цитированием
  #4 (permalink)  
Старый 17.04.2013, 10:01
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

в смысле зависит от реализации alert?? давайте изменим немного код..:
var i = 0;
$(window).scroll(function(){
i++;
});

а потом выведем значение i в хроме и опере.. в хроме будет 1, а в опере около 20..
имхо тут далеко дело не в алерте...
Ответить с цитированием
  #5 (permalink)  
Старый 17.04.2013, 12:12
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,585

skrudjmakdak, бредите.
i будет столько - сколько раз вызвана scroll, а вызываться она будет до тех пор пока вы сколлите. КО.
__________________
29375, 35
Ответить с цитированием
  #6 (permalink)  
Старый 17.04.2013, 12:20
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

ммм)) видимо мы друг друга не понимаем. я один раз крутонул колесико в двух браузерах.. а числа разные..
т.е. в опере за один "щелчек" скролл вызывается около 20 раз, но там можно заметить, что скролит анимированно (т.е. каждый шаг вызывает событие). а в хроме перескакивает за 1 раз
возможно этим и можно объяснить вот это все..
Ответить с цитированием
  #7 (permalink)  
Старый 17.04.2013, 13:11
Аватар для Алек
Аспирант
Отправить личное сообщение для Алек Посмотреть профиль Найти все сообщения от Алек
 
Регистрация: 14.04.2013
Сообщений: 85

Объяснить конечно можно, но с этом всё равно-же ничего не поделать.
Событие .scroll очевидно по разному обрабатывается разными браузерами. Позже буду рассматривать .scroll на других примерах, посмотрю как в них будет работать.
Ответить с цитированием
  #8 (permalink)  
Старый 17.04.2013, 19:53
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,585

Сообщение от skrudjmakdak Посмотреть сообщение
ммм)) видимо мы друг друга не понимаем. я один раз крутонул колесико в двух браузерах.. а числа разные..
т.е. в опере за один "щелчек" скролл вызывается около 20 раз, но там можно заметить, что скролит анимированно (т.е. каждый шаг вызывает событие). а в хроме перескакивает за 1 раз
возможно этим и можно объяснить вот это все..
Естественно, только пробема не в браузерах, а в их настройке. Что зависит от конкретного пользователя. В опере включена так называемая "плавная прокрутка", а в хроме нет.

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

Это должно быть очевидно, и ждать от скролла другого поведения - странно. Привязываться же к количеству вызовов вообще бессмыслено - призываться надо к проскролленому расстоянию.

По поводу же alert: нормальный alert должен моментально стопарить работу в конкретном окне. То что успевает настековаться куча алертов - имхо бага.
__________________
29375, 35
Ответить с цитированием
  #9 (permalink)  
Старый 29.03.2015, 20:23
Интересующийся
Отправить личное сообщение для SFproG Посмотреть профиль Найти все сообщения от SFproG
 
Регистрация: 08.02.2013
Сообщений: 16

Проблему-то решили? Объясните, пожалуйста. Не могу сообразить как "алерт" вывести один раз в любых браузерах. В опере 20 раз выскакивает, а нужно один.
var ScrollTop = 0, Top = 0;
        $('#div').scroll(function(){
            Top = $('#div').scrollTop();
            if (ScrollTop < Top){ 

		alert('Какая-то функция');//крутим колесо вниз
				   
            } else if (ScrollTop > Top) {
			    
		alert('Какая-то функция');//крутим колесо вверх
            }
            ScrollTop = Top;
        });

Последний раз редактировалось SFproG, 29.03.2015 в 20:31.
Ответить с цитированием
  #10 (permalink)  
Старый 29.03.2015, 21:09
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

SFproG,
при скроллинге событие повторяется много раз
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Событие input и IE10 kobezzza Internet Explorer 2 21.03.2013 19:02
сбивается событие czp Events/DOM/Window 21 30.05.2012 21:45
Как правильно подавить событие при подключении своего обработчика? Маэстро Firefox/Mozilla 2 03.09.2011 11:46
Отловить событие simple Events/DOM/Window 3 11.05.2011 14:20
какое событие возникает во время формирования html IT-AleX Events/DOM/Window 2 20.02.2009 16:13