jQuery window.width在Firefox中不起作用

时间:2015-12-26 16:08:21

标签: jquery firefox smooth-scrolling

适用于Chrome和Safari,但不适用于FF 43.0.2。 Firefox会忽略'scrollTop': $target.offset().top -100行,而是直接滚动到锚点。我对编程很新,所以对代码结构的任何改进也都很感激。谢谢!

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

var target = this.hash;
var $target = $(target);

if ($(window).width() < 769) {
    $('html, body').stop().animate({
        'scrollTop': $target.offset().top -100
    }, 700, 'swing', function () {
        window.location.hash = target;
    });
    // Dropdown Menu Logic
        $('#nav-icon').toggleClass('open');
        $('#nav-mobile ul').slideToggle();
    }
    else {
        $('html, body').stop().animate({
        'scrollTop': $target.offset().top -150
    }, 700, 'swing', function () {
        window.location.hash = target;
    });
    // Dropdown Menu Logic
        $('#nav-icon').toggleClass('open');
        $('#nav-mobile ul').slideToggle();
    }
}); 

1 个答案:

答案 0 :(得分:1)

代码工作正常,但是当动画结束后更改window.location时,Firefox会“跳转”到相应的锚点。这实际上是理想的行为。

要避免此工件,请使用history.pushState代替并在不受支持的浏览器上回退到location.hash:)

if(history.pushState){
    history.pushState(null, null, target);
}else{
    location.hash = target;
}

示例:http://codepen.io/victmo/pen/dGNvay

干杯