Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 24.08.2012, 15:30
Аватар для LittlePony
Кандидат Javascript-наук
Отправить личное сообщение для LittlePony Посмотреть профиль Найти все сообщения от LittlePony
 
Регистрация: 19.08.2012
Сообщений: 100

конечно не работает простите
но читать надо вдумчиво, а не просто копировать.
Основная идея, надеюсь, понятна?
Ответить с цитированием
  #12 (permalink)  
Старый 24.08.2012, 15:38
Интересующийся
Отправить личное сообщение для JEEN Посмотреть профиль Найти все сообщения от JEEN
 
Регистрация: 03.02.2012
Сообщений: 22

1. не нужно всех считать идиотами, я ваш код "обдумывал".
2. идея понятна, но и то она "не рабочая" даже на простом примере, а у меня в результате гораздо сложней будет конструкция, там этот "обход" не прокатит
3. Ваша идея заключалась в том, чтобы функция scroll выполнила 17 раз операцию text = 'текст', а потом один раз вставила ее на страницу. Меня такой костыль вряд ли устроит.

вот рабочий пример того что мне нужно
http://www.jstoolbox.com/demo/endless/
используется scroll(), но без бага и без костылей.
Ответить с цитированием
  #13 (permalink)  
Старый 24.08.2012, 16:00
Интересующийся
Отправить личное сообщение для JEEN Посмотреть профиль Найти все сообщения от JEEN
 
Регистрация: 03.02.2012
Сообщений: 22

в FireFox тоже все нормально. Только опера выполняет команду больше 1 раза..
Ответить с цитированием
  #14 (permalink)  
Старый 24.08.2012, 16:03
Аватар для LittlePony
Кандидат Javascript-наук
Отправить личное сообщение для LittlePony Посмотреть профиль Найти все сообщения от LittlePony
 
Регистрация: 19.08.2012
Сообщений: 100

здесь правильнее поступить так: .scroll() должен только менять состояние — пусть это будет переменная, флаг.
А функция подгрузки дополнительных сообщений должна быть подписана на событие изменения состояния этого флага.
И тогда вы не зависите от багов различных своеобразных браузеров.
Ответить с цитированием
  #15 (permalink)  
Старый 24.08.2012, 16:07
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от JEEN Посмотреть сообщение
в FireFox тоже все нормально. Только опера выполняет команду больше 1 раза..
Вы пробовали как-либо ограничивать скорость вызовов* обработчика ?

* отношение количества вызовов к прошедшему времени. или частота вызова, напр. раз в 1 мс.

var last = 0;

$(window).scroll(function()
    var now = +new Date;
    if (now - last > 1) {
        last = now;
        // code ...
        $("span").append('<b>текст</b><br/>'); 
    }
}

Последний раз редактировалось melky, 24.08.2012 в 16:10.
Ответить с цитированием
  #16 (permalink)  
Старый 24.08.2012, 16:23
Интересующийся
Отправить личное сообщение для JEEN Посмотреть профиль Найти все сообщения от JEEN
 
Регистрация: 03.02.2012
Сообщений: 22

ограничивать время, ставить флаги это конечно же можно. Но это костыль, которым я воспользуюсь, если не найду другого решения.

очень много где используется scroll(), но везде работает без багов. Такое ощущение, что только у меня такой косяк. В любом случае, всем спасибо за помощь.
Ответить с цитированием
  #17 (permalink)  
Старый 24.08.2012, 16:24
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от JEEN
Но это костыль
это один из путей увеличения производительности - ибо это событие при прокрутке вызывается очень часто, и если в обработчике что-то отрисовывается на странице (имитация position:fixed сюда же), то будет нехило тормозить.

тем более, если Вы работаете с DOM - будьте готовы к костылям на каждой строке.
Ответить с цитированием
  #18 (permalink)  
Старый 24.08.2012, 16:33
Аватар для LittlePony
Кандидат Javascript-наук
Отправить личное сообщение для LittlePony Посмотреть профиль Найти все сообщения от LittlePony
 
Регистрация: 19.08.2012
Сообщений: 100

Сообщение от JEEN Посмотреть сообщение
Но это костыль
нет, это не костыль. Это разграничение сущностей.
Ответить с цитированием
  #19 (permalink)  
Старый 24.08.2012, 16:40
Интересующийся
Отправить личное сообщение для JEEN Посмотреть профиль Найти все сообщения от JEEN
 
Регистрация: 03.02.2012
Сообщений: 22

melky, вы меня убедили, спасибо за объяснение.

сделал так
var scrollTimer = null;
$(window).scroll(function () {
    if (scrollTimer) {
        clearTimeout(scrollTimer);
    }
    scrollTimer = setTimeout(handleScroll, 500);
});


});
function handleScroll() {
    scrollTimer = null;
    $("span").append('<b>текст</b><br/>');  
}


и наконец-то нашел этот сервис http://jsfiddle.net/akaAU/10/

всем спасибо!
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка в jQuery 1.5.1. Не понимаю в чем проблема? viatcheslav AJAX и COMET 0 16.05.2011 11:38
Проблема с вкладками на jquery tomclancys Общие вопросы Javascript 0 11.03.2010 08:44
jQuery datepicker + blockUI в Опере 9.27 проблема позиционирования Dionysius Opera, Safari и др. 6 23.12.2009 16:41
Проблема с jQuery. Beck jQuery 2 26.08.2009 19:08
jquery tabs (проблема с отображением) Extern Элементы интерфейса 0 16.03.2009 17:42