Хотите отключить функцию JS только в Firefox - PullRequest
0 голосов
/ 28 мая 2019

У меня есть интерактивное меню на веб-сайте, над которым я работаю. Меню имеет абсолютное позиционирование при первой загрузке страницы, а затем переключается на фиксированное после начала прокрутки. Это прекрасно работает на 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, так что это была очень неправильная попытка исправить это.

...