如何在不跳转文档的情况下更新window.location.hash?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (12)

我在我的网站上设置了一个滑动面板

function() {
   window.location.hash = id;
}

下面是更改面板的代码

$('#something a').click(function(event) {
    event.preventDefault();
    var link = $(this);
    var id = link[0].hash;

    $('#slider').scrollTo(id, 800, {
        onAfter: function() {

            link.parents('li').siblings().removeClass('active');
            link.parent().addClass('active');
            window.location.hash = id;

            }
    });
});
提问于
用户回答回答于

if(history.pushState) {
    history.pushState(null, null, '#myhash');
}
else {
    location.hash = '#myhash';
}

用户回答回答于

解决这一问题的一种方法是在散列前面加上一个任意值,如下所示:

window.location.hash = 'panel-' + id.replace('#', '');

然后,所需要做的就是检查页面加载时的前缀散列

$(function(){
    var h = window.location.hash.replace('panel-', '');
    if (h) {
        $('#slider').scrollTo(h, 800);
    }
});
var foundHash;
setInterval(function() {
    var h = window.location.hash.replace('panel-', '');
    if (h && h !== foundHash) {
        $('#slider').scrollTo(h, 800);
        foundHash = h;
    }
}, 100);

扫码关注云+社区