У меня есть интерактивное меню на веб-сайте, над которым я работаю. Меню имеет абсолютное позиционирование при первой загрузке страницы, а затем переключается на фиксированное после начала прокрутки. Это прекрасно работает на Chrome, Safari и т. Д., Но я недавно обнаружил, что это не очень удобно в Firefox.
Я думаю, что проблема заключается в синхронизации в Firefox, и когда я устанавливаю точку останова в инспекторе Firefox перед сценарием, проблема исправляется. Поэтому сейчас я пытаюсь воспроизвести эту точку останова в моем коде.
Я пытался вложить всю функцию в оператор if, который, как я надеялся, сказал бы: «если в Firefox, подождите 1 секунду перед выполнением скрипта, если в любом другом браузере просто запустите скрипт»
var menu = $('.header-container-wrapper');
var timeout;
if (navigator.userAgent.search("Firefox") >= 0) {
function timeoutFunction() {
timeout = setTimeout(firefoxFix, 1000);
}
function firefoxFix(){
if (menu.length > 0) {
var menu_offset = menu.offset();
$(window).on('scroll', function () {
if ($(window).scrollTop() > menu_offset.top) {
menu.addClass('fixed-menu');
} else {
menu.removeClass('fixed-menu');
}
});
}
}
} else {
if (menu.length > 0) {
var menu_offset = menu.offset();
$(window).on('scroll', function () {
if ($(window).scrollTop() > menu_offset.top) {
menu.addClass('fixed-menu');
} else {
menu.removeClass('fixed-menu');
}
});
}
}
Похоже, что это не сработало, потому что проблема все еще существует в Firefox, но при этом у Chrome нет проблем.
P.S. Я не настолько осведомлен о JS, так что это была очень неправильная попытка исправить это.