2015-05-19 2 views
2

Я создаю один веб-сайт, который использует функцию scrollTop() от JQuery.Jquery scrollTop не работает так, как должно быть в Firefox

Это мой код:

$(document).ready(function(){ 
    $('a[href^="#"]').on('click',function (e) { 
     e.preventDefault(); 

     var target = this.hash, 
     $target = $(target); 
     var targetOffset = $target.offset().top - 140; 
     $('html, body').stop().animate({ 
      'scrollTop': targetOffset 
     }, 900, 'swing', function() { 
      window.location.hash = target; 
     }); 
    }); 
}); 

Он отлично работает на Chrome, Safari ан Вивальди, но когда я запускаю сайт в FireFox, он не принимает взять мой targetOffset. Есть ли способ исправить это, не затрагивая другие браузеры?

предварительный просмотр сайта можно найти на http://listycon.kiran.be

EDIT Я сделал ScreenCapture прояснить эту проблему, вы можете увидеть по этой ссылке: http://kiranvanursel.tinytake.com/sf/MTYxMTg5XzEwMTM1Njk

+0

Можете ли вы поделиться своим кодом HTML? –

+0

Этот сайт работает на моем. Я использую firefox – shan

+0

работает на моем firefox – cari

ответ

2

Похоже, что светлячок имеет некоторые проблемы с захватите .hash из href в вашем теге. Вы могли бы попробовать что-то вдоль этих линий:

$(document).ready(function(){ 
    $('a[href^="#"]').on('click',function (e) { 
     e.preventDefault(); 
     var href = $(this).attr('href'); 
     href = '#' + href.split('#').pop(); 

     var $target = $(href).offset().top - 140; 

     $('html, body').animate({ 
      'scrollTop': $target 
     }, 900, 'swing', function() { 
      window.history.pushState("object or string", "Title", href); 
     }); 
    }); 
});  

Обрезка хэш из HREF атрибута должен работать в любом браузере.


может быть, 'прыжок' Результаты установки window.location.hash.

Попробуйте обновить url, используя событие html5 pushstate. Я обновил блок кода, я думаю, его стоит попробовать

+0

Благодарим вас за ответ. К сожалению, проблема все еще существует. Браузеры прокручиваются в нужное положение, а затем перебрасывают величину смещения в начало – Kickar

+0

Это работает! Вы, сэр, герой! большое спасибо – Kickar