在使用网址中的ID自动导航的交互式网站上工作后,我想知道如何隐藏它,同时它仍然会正常导航。经过一些研究,我发现以下脚本对我不起作用。
if ($.browser.msie && parseInt($.browser.version, 10) === 9 && window.location.href.indexOf("#"))
{
document.location.href = String( document.location.href ).replace( /#/, "" );
}
ankit Chaudhary& jetpack小马回答了我的问题,我只是处理了一些问题。
答案 0 :(得分:0)
您可以使用pushState方法操作网址,而无需重新加载/刷新页面。
window.history.pushState(
"object or string",
"Title",
window.location.href.substring(0, window.location.href.indexOf('#'))
);
答案 1 :(得分:0)
您只在替换方法中替换“#”符号。要替换整个哈希,它应该如下所示:
.replace(/#.+$/, "");
此外,考虑使用HTML5 history API而不是document.location.href
。它提供了两种方法:
pushState():它会更改网址栏中的网址并创建新的历史记录条目。例如,如果您在页面example.com/#foo
上并且致电history.pushState("", "", "example.com")
,则您的网址栏会显示example.com
,当您按浏览器后退箭头时,它会将您带回{{1} }}
replaceState():它会更改网址栏中的网址并替换当前的历史记录条目。这意味着在上面的相同示例中,浏览器后退箭头将带您到example.com/#foo
之前的页面。
以下是使用 pushState():
的代码示例example.com/#foo
此API的浏览器支持非常适合详细检查:Browser compatibility