我是ajax-ifying在我的一个项目中的分页,因为我希望用户能够为当前页面添加书签,我通过哈希附加页码,比如说:
onclick="callPage(2); window.location.hash='p=2'; return false;"
和hyperlink
上的那个它工作正常以及所有内容,除了页码为1时,我不希望URL
成为/products#p=1
,我只是希望它是/products
我试过这些变化:
window.location.hash=''
可以使用,但网址现在就像/products#
一样,而且我不太喜欢那里的哈希。/products#p=3
,因为我没有弄乱散列。<a href="#">
的href哈希他应该使用javascript:void(0)
代替。 (他们从未听说过Ajax吗?)所以最后,我决定制作这个帖子,我在这里发现了几个相似的帖子,但所有答案都与我的第二点非常相似。
所以我的一个大问题仍然是一个问题:如何从网址中挖出哈希,可能还要离开宇宙? (仅限第一页!)
答案 0 :(得分:92)
history.pushState("", document.title, window.location.pathname);
答案 1 :(得分:52)
更新了答案:
实现此目标的最佳方法是关注Homero Barbosa的answer below:
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);
}
...但是这会为你刷新页面,这对你来说似乎有点小事。咧嘴笑似乎是最好的选择。
答案 2 :(得分:5)
var urlWithoutHash = document.location.href.replace(location.hash , "" );
答案 3 :(得分:4)
完美地为我工作
View page source
答案 4 :(得分:3)
function removeHash () {
var scrollV, scrollH, loc = window.location;
if ("pushState" in history)
history.pushState("", document.title, loc.pathname + loc.search);
else {
// Prevent scrolling by storing the page's current scroll offset
scrollV = document.body.scrollTop;
scrollH = document.body.scrollLeft;
loc.hash = "";
// Restore the scroll offset, should be flicker free
document.body.scrollTop = scrollV;
document.body.scrollLeft = scrollH;
}
}