2015-09-20 5 views
0

У меня есть простой сценарий JS/Jquery, который позволяет пользователю перемещаться (через хеш-ссылки меню и ScrollTop) в определенную часть раздела страницы (в этом случае/guide/раздел). Скрипт отлично работает на Chrome. Однако на Firefox он не срабатывает.JQuery ScrollTop работает на chrome, но не firefox

это письмо, мой хром версия: 45.0.2454.85
и мой светлячок является 40.0.3

URL-адрес для сайта, на котором: genesistutorials101.com
Связи с хэшей можно найти под МЕНЮ.
Сценария я работаю:

//HASH # NAV 
$(function(){ 

if (window.location.hash) { 
    var target = $(window.location.hash); 
    navigateToTarget(target); 
} 

$('.nav-primary a[href*="#"]').on('click', function(event) { 
    //console.log("testing"); 
    var href = $(this).attr("href"); 
    var target = $(href.substr(href.indexOf("#"))); 
    navigateToTarget(target); 
}); 
}); 

function navigateToTarget(target) { 
if(target.length) { 
    event.preventDefault(); 
    $('html, body').animate({ 
    scrollTop: target.offset().top - 155 
    }, 1000); 
} 
} 

Я прочитал на другом StackOverflow потоке, светлячок не нравится, когда функция() отсутствуют «событие» внутри, но я старался, что и без каких-либо заметных изменений вообще.

Итак, для целей тестирования перейдите по любой из начальных ссылок в навигационном меню на хром и firefox, чтобы оценить разницу.

Любая помощь или указатели к решению было бы весьма признателен

С уважением
Sotkra

+0

У вас возникли ошибки в консоли? – Tushar

ответ

4

Проблема заключается в том, что вы вызываете event.preventDefault() внутри функции navigateToTarget, и нет ни одной переменной с именем event там.

Он работает на Chrome (и, вероятно, на IE), поскольку у них есть глобальное свойство window.event, но это свойство не является перекрестным браузером, и оно не будет работать в браузерах, у которых нет этого свойства.

Вы должны удалить event.preventDefault(), и все будет хорошо работать.

+0

Спасибо за разъяснение Buzinas. Я не знал об этой ситуации. Я обращу больше внимания на детали этого типа. – Sotkra

+0

Будь я ошибся, но не проверял все, прежде чем выбирать ответ как правильный. Теперь код не будет работать за пределами/guide/page. Если я где-то, кроме страницы руководства, щелчок по ссылке меню ничего не вызовет. Если я нахожусь на странице руководства, все работает хорошо. – Sotkra

+0

Хорошо, суть дела заключалась в том, чтобы просто избавиться от event.preventDefault(); Я отвечу на ваш вопрос, но я предлагаю вам добавить мою заметку выше, чтобы она стала более заметной. Приветствия и спасибо снова. – Sotkra

Смежные вопросы