1

这可能是一个简单的问题,我确信我在这里遗漏了一些东西。

我要做的就是禁用 URL 中的哈希标记链接。例如,如果有人要输入 url:www.example.com/#anchor它将更改为www.example.com并完全删除 URL 中的哈希。

我什至不介意禁用该功能并将其保留在 URL 中,无论哪种方式。

到目前为止,这是我所拥有的,但我运气不佳:

var locationHashIndex = window.location.href.lastIndexOf("#"),
    station = window.location.href.slice(locationHashIndex + 1);

    window.location.href = window.location.href.substr(0, locationHashIndex);

这让页面重新加载变得疯狂......不是我想要的。对这个有什么想法吗?

4

4 回答 4

3

你可以做:

if(window.location.hash){
    window.location.href = window.location.href.replace(/#.*/,'');
}
于 2013-04-14T20:56:45.197 回答
1

您将需要查看window.location.hash,它存储了您要删除的值,因此您只想在该变量中有值时运行您的代码。

if(window.location.hash != ''){
    // code here
}
于 2013-04-14T20:57:28.127 回答
1

你应该window.history.pushState改用window.location.href https://developer.mozilla.org/en-US/docs/DOM/Manipulating_the_browser_history

于 2013-04-14T20:57:52.643 回答
1

如果您愿意使用 jQuery,请参阅https://stackoverflow.com/a/8683139/618649以获得一个简单的解决方案,以禁用所有带有 # 的 URL。

在这个例子中,你可以整天点击 Go There 链接,什么都不会发生。

<html>
    <head>
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    </head>
    <body>
        <a href="./#there"><span id="here">Go There...</span></a>
        <br/>.<br/>.<br/>.<br/>.<br/>.<br/>.<br/>.<br/>.
        <br/>.<br/>.<br/>.<br/>.<br/>.<br/>.<br/>.<br/>.
        <br/>.<br/>.<br/>.<br/>.<br/>.<br/>.<br/>.<br/>.
        <br/>.<br/>.<br/>.<br/>.<br/>.<br/>.<br/>.<br/>.
        <br/>.<br/>.<br/>.<br/>.<br/>.<br/>.<br/>.<br/>.
        <br/>.<br/>.<br/>.<br/>.<br/>.<br/>.<br/>.<br/>.
        <span id="there">There...</span></a>

        <script language="javascript">
        jQuery(function ($) {
            $("a[href*=#]").click(function(e) {
                e.preventDefault();
            });
        });
        </script>
    </body>
</html>
于 2013-04-14T21:12:19.843 回答