У меня есть всплывающее окно на моем сайте, в котором отображается дополнительная информация об элементах, отображаемых на главном экране. Мне нужно синхронизировать прокрутку между двумя окнами, так что, когда пользователь прокручивает одно из окон, другое окно автоматически прокручивается в том же количестве.Как синхронизировать прокрутку между двумя окнами
Я смог сделать это с помощью события прокрутки jquery и с помощью функции scrollTop установить положение прокрутки. что-то вроде этого:
$("#localDiv").scroll(function() {
var scrollPos = $("#localDiv").scrollTop();
$("targetElement").scrollTop(scrollPos);
});
я упростил фактический код, потому что я должен сделать какую-то работу, чтобы достичь элементов в другом окне, но это не вопрос.
Проблема в том, что этот код отлично работает в Chrome и IE, но в FireFox прокрутка становится очень медленной.
Я создал пример здесь: http://jsfiddle.net/Lv2dw787/4/. Проблема, похоже, связана с DIV на той же странице. Вы можете заметить, что когда синхронизация прокрутки отключена, скорость возвращается к нормальной.
Кто-нибудь знает, как исправить это на FireFox?
Редактировать после Дэйва Чена ответа:
Принятого ответа решил мою проблему, но у него есть улов. Сначала я пытался сделать это:
lock = true;
try {
var scrollPos = $("#contentDivA").scrollTop();
$("#contentDivB").scrollTop(scrollPos);
}
finally
{
lock = false;
}
Но $("#contentDivB").scrollTop(scrollPos);
линия, кажется, генерировать событие прокрутки DIVB только после того, как текущая функция завершает выполнение, так что в конце концов часть try..finally выполнял до этого. Так что я должен был это:
lock = true;
var scrollPos = $("#contentDivA").scrollTop();
$("#contentDivB").scrollTop(scrollPos);
и DIVB событие прокрутки:
if (lock)
lock = false;
else {
(Do the scroll on DivA)
}
прекрасно работает на моем Mac Firefox. Вы пробовали второй компьютер и подтвердили, что он не является локальным для вашей установки? Ваш Firefox просто медленный, период? – Jan
Я могу подтвердить, что он работает медленнее на FireFox на mac тоже –