Вопрос по javascript, jquery – jQuery: при использовании события on .scroll и оповещения firefox кажется бесконечным циклом

0

У меня есть следующий код JQuery в одном из моих основных шаблонов:

<code>$(document).scroll(function() {
    var scroll_top = $(document).scrollTop();
    alert(scroll_top);
    if (scroll_top <= 70) {
        $('#fixedback').fadeOut(500);
    } else {
        $('#fixedback').fadeIn(500);
    }
});
</code>

Когда код выполнится, Firefox 11 и 12 очистят страницу и перестанут отвечать на запросы. Я должен прекратить процесс в диспетчере задач. Если я уберу предупреждение (), код выполняется отлично. Если я добавляю предупреждение в любую из функций .scroll, то же самое происходит и на любой из моих страниц. Страница загрузится и работает, пока я не прокручиваю страницу.

Использование Jquery 1.7.1.min. и C # ASPX страницы. Я не тестировал в других браузерах, так как только для разработки мне нужны оповещения для работы.

Да. Если я уберу предупреждение, код сработает. CaptainBli
Вы говорите, что код хорошо работает в FF, если предупреждение удалено? j08691

Ваш Ответ

1   ответ
2

Вопрос:Проблема Firefox с scrollTop имеетответ это может быть применено здесь. Это говорит о том, что вы откладываетеalert() звоните используяsetTimeout() чтобы дать Firefox возможность сделать все, что ему нужно, чтобы не перекрывать страницу. Применяя обходной путь к вашему коду, вы получите что-то вроде этого:

window.onscroll = catchScroll;
var timeOutId = 0;
var jitterBuffer = 200;
function catchScroll() {
    if (timeOutId) clearTimeout(timeOutId);
    timeOutId = setTimeout(function () { DoStuffOnScrollEvent() }, jitterBuffer);
}

function DoStuffOnScrollEvent() {
    var scroll_top = $(document).scrollTop();
    alert(scroll_top);
    if (scroll_top <= 70) {
        $('#fixedback').fadeOut(500);
    } else {
        $('#fixedback').fadeIn(500);
    }
};

Или вместоalert(), вы могли бы использоватьconsole.log(), который будет работать изначально в более поздних версиях IE и Chrome, а также Firefox черезподжигатель.

Error: User Rate Limit Exceeded CaptainBli

Похожие вопросы