在使用URL中的id自动导航的交互式站点上工作之后,我想知道如何在仍能正常导航的同时将其隐藏。经过一些研究后,我发现以下脚本对我不起作用。
if ($.browser.msie && parseInt($.browser.version, 10) === 9 && window.location.href.indexOf("#"))
{
document.location.href = String( document.location.href ).replace( /#/, "" );
}
Ankit Chaudhary和jetpack小马回答了我的问题,我只是有一些需要解决的问题。
您将在替换方法中仅替换“#”符号。要替换整个哈希,它应如下所示:
.replace(/#.+$/, "");
另外,不要document.location.href
考虑使用HTML5历史记录API。它提供2种方法:
pushState():它更改URL栏中的URL并创建一个新的历史记录条目。例如,如果您在某个页面上example.com/#foo
并进行调用history.pushState("", "", "example.com")
,则将显示URL栏example.com
,当您按下浏览器的后退箭头时,它将带您回到example.com/#foo
。
replaceState():它更改URL栏中的URL并替换当前的历史记录条目。也就是说,在与上述相同的示例中,浏览器后退箭头会将您带到之前的页面example.com/#foo
。
这是使用pushState()的代码示例:
var loc = window.location;
if (loc.hash) {
history.pushState({}, document.title, loc.pathname + loc.search);
}
此API的浏览器支持非常适合进行详细检查:浏览器兼容性
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句