Tôi đang làm việc trên một trang có menu cố định chọn sau khi người dùng đã cuộn một khoảng cách nhất định từ trên xuống và khi họ cuộn xuống trang, các liên kết khác nhau từ trình đơn được cung cấp một lớp thay đổi màu sắc. Tất cả điều này dường như hoạt động tốt trong Chrome và Safari, nhưng trong Firefox, trang bị đóng băng ở trên cùng. Tôi tự hỏi nếu nó lặp đi lặp lại thông qua một số mã không ngừng ... về cơ bản đóng băng cửa sổ.window.scroll chức năng đóng băng firefox
Đây là mã của tôi.
$.localScroll({
onBefore: function() {
$('body').data('scroll-executing', true);
},
onAfter: function() {
$('body').data('scroll-executing', false);
$(window).trigger("scroll");
}
});
$(window).scroll(function() {
if ($(this).scrollTop() > 259) {
$('.nav').addClass("f-nav");
} else {
$('.nav').removeClass("f-nav");
}
});
$(window).scroll(function() {
if ($('body').data('scroll-executing')) {
return;
}
// find the a with class 'active' and remove it
$("a").removeClass('active');
// get the amount the window has scrolled
var scroll = $(window).scrollTop();
// add the 'active' class to the correct #nav based on the scroll amount
if (scroll > 2150) {
$("#nav_3").removeClass('active');
$("#nav_5").attr('class', 'active');
setHash("contact");
} else if (scroll > 1300) {
$("#nav_2").removeClass('active');
$("#nav_3").attr('class', 'active');
setHash("portfolio");
} else if (scroll > 400) {
$("#nav_2").attr('class', 'active');
setHash("about");
} else if (scroll <= 380) { //when I remove this section, the problem goes away.
$("#nav_1").attr('class', 'active');
setHash("home");
}
});
Tôi quên thêm định nghĩa setHash. Đây rồi.
setHash = function(hash) {
var scrollmem = $('body').scrollTop();
window.location.hash = hash;
$('html,body').scrollTop(scrollmem);
}
Tôi cũng nhận thấy rằng CPU tăng tới 100% và tôi dường như không thể hiểu tại sao.
Sự cố ở phần thứ ba của mã bắt đầu bằng mã khác nếu (cuộn < = 380). Tôi đã tìm ra điều đó bằng quá trình loại bỏ. Ai có thể nhìn thấy nó looping hoặc làm một cái gì đó mà sẽ không bao giờ kết thúc ... hoặc sẽ giải thích tại sao firefox đóng băng ở đầu trang?
Tôi mới làm quen với tất cả những điều này ... Tôi chỉ nhặt jquery trong vài ngày qua, và về cơ bản tôi đã googling rất nhiều và thích ứng mã để nó phù hợp với những gì tôi cần.
Mọi trợ giúp sẽ được đánh giá cao.
Bạn có thể cung cấp liên kết đến trang ví dụ hiển thị sự cố, có lẽ trong jsfiddle.net hoặc một cái gì đó tương tự không? –