0

マスター テンプレートの 1 つに次の jQuery コードがあります。

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

コードが Firefox 11 および 12 を実行すると、ページが空白になり、応答しなくなります。タスク マネージャーでプロセスを終了する必要があります。alert() を取り出すと、コードは完全に実行されます。いずれかの .scroll 関数にアラートを追加すると、どのページでも同じことが起こります。ページが読み込まれ、ページをスクロールするまで機能します。

Jquery 1.7.1.min を使用します。および C# ASPX ページ。アラートが機能する必要があるのは開発のみであるため、他のブラウザーではテストしていません。

4

1 に答える 1

2

Firefox のバグのようです。

質問: Firefox の scrollTop の問題には、ここで適用できる回答があります。それが示唆しているのは、ページが空白になるのを避けるために必要なことは何でもする機会を Firefox に与えるために、alert()を使用して呼び出しを延期することです。setTimeout()コードに回避策を適用すると、次のようになります。

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 でネイティブに動作し、Firebugを介して Firefox で動作します。

于 2012-04-27T16:50:29.347 に答える