如何用另一个响应替换窗口的 URL 哈希?

问题描述 投票:0回答:2

我尝试使用替换方法更改哈希 URL (document.location.hash),但它不起作用。

$(function(){
 var anchor = document.location.hash;
 //this returns me a string value like '#categories'

  $('span').click(function(){

     $(window).attr('url').replace(anchor,'#food');
     //try to change current url.hash '#categories'
     //with another string, I stucked here.
  });

});

我不想更改/刷新页面,我只想替换 URL 而没有任何响应。

注意:我不想用 href="#food" 解决方案来解决这个问题。

javascript jquery hash replace attr
2个回答
150
投票

使用

location
window.location
代替
document.location
,因为后者是非标准的。

window.location.hash = '#food';

这会将 URL 的哈希值替换为您为其设置的值。

参考


73
投票

您可能更喜欢这个问题的答案。

不同之处在于,使用

history.replaceState()
,您不会滚动到锚点,而只会在导航栏中替换它。所有主流浏览器都支持它,source

history.replaceState(undefined, '', "#hash_value")
© www.soinside.com 2019 - 2024. All rights reserved.