在Urls Javascript中隐藏#

用户6258774

在使用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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章