隐藏#来自Urls Javascript

时间:2017-02-07 09:43:51

标签: javascript jquery html 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小马回答了我的问题,我只是处理了一些问题。

2 个答案:

答案 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