小编典典

从网址中删除哈希

ajax

我要在我的一个项目中对分页进行ajax化,并且由于我希望用户能够为当前页面添加书签,因此我通过哈希附加页面编号,例如:

onclick="callPage(2); window.location.hash='p=2'; return false;"

并且多数民众赞成在hyperlink它工作正常,一切,除了,当页码为1时,我不想URL成为/products#p=1,我只是希望它成为/products

我尝试了以下变体:

  1. window.location.hash=''的作品,但网址现在就像/products#,我不很哈希那里。
  2. 根本不使用window.location.hash,但是当用户从第3页回到第1页时,他位于第1页,但是url仍然是/products#p=3因为我没有弄乱哈希。
  3. 对此的Google搜索使我进入了几分钟(大约15个)的愚蠢论坛,在该论坛上提出了正确的问题,但答案表明该页面跳了,因为线程创建者在href中有一个像hash一样的哈希<a href="#">,他应该javascript:void(0)改用它。(他们是否从未听说过Ajax?)

所以最后,我决定创建此线程,在这里找到了几个类似的线程,但是所有答案都与第二点非常相似。

所以我的大问题仍然是一个问题:如何将哈希从URL踢出,甚至从宇宙中踢出去?(仅用于首页!)


阅读 250

收藏
2020-07-26

共1个答案

小编典典

更新的答案

达到此目的的最佳方法是遵循Homero Barbosa的以下回答:

history.pushState("", document.title, window.location.pathname);

…,或者,如果您想维护搜索参数:

history.pushState("", document.title, window.location.pathname + window.location.search);

原始答案,不要使用这个,badwrongfun

var loc = window.location.href,
    index = loc.indexOf('#');

if (index > 0) {
  window.location = loc.substring(0, index);
}

…但这为您刷新了页面,刚到达那里似乎有点不礼貌。咧着嘴笑,似乎是最好的选择。

2020-07-26