Javascript 在URL重写期间阻止IE/FF处理锚?

Javascript 在URL重写期间阻止IE/FF处理锚?,javascript,jquery,html,internet-explorer,firefox,Javascript,Jquery,Html,Internet Explorer,Firefox,很抱歉,我不知道该怎么说 我的页面顶部有一个导航菜单。单击每个链接将滚动到目标元素。它还将sectionname附加到URL。在Chrome中一切都很好。我遇到的问题是菜单本身是静态的,所以当我启动滚动时,我会偏移菜单的高度。同样,在Chrome中效果很好,但在IE和FF中,它会滚动到我想要的位置,然后立即跳回元素顶部减去偏移量 代码如下: $('.nav').on('click', function (e) { e.preventDefault(); var target =

很抱歉,我不知道该怎么说

我的页面顶部有一个导航菜单。单击每个链接将滚动到目标元素。它还将sectionname附加到URL。在Chrome中一切都很好。我遇到的问题是菜单本身是静态的,所以当我启动滚动时,我会偏移菜单的高度。同样,在Chrome中效果很好,但在IE和FF中,它会滚动到我想要的位置,然后立即跳回元素顶部减去偏移量

代码如下:

$('.nav').on('click', function (e) {
    e.preventDefault();
    var target = $(this).data('target');
    $('html, body').stop().animate({
        scrollTop: $(target).offset().top - 77          //should actually be 78 (height of the header, but IE has a 1px discrepancy.
    }, 800, 'swing', function () {
        window.location.hash = target;                  //causes IE and FF to jump back to the original top without the header offset.
    });
});
如何防止IE和FF立即处理新URL?或者有更好的方法吗?

您可以使用history.replaceState修改地址字符串,请参阅

history.replaceState({}, target.slice(1), target);