禁用URL JavaScript中的哈希链接

时间:2013-04-14 20:54:42

标签: javascript jquery

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

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

我甚至不介意只是禁用该功能并将其保留在URL中。无论如何。

这是我到目前为止所拥有的,但我没有太多运气:

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

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

这会让页面重新加载所有的疯狂...不是我想要的。对此有何看法?

4 个答案:

答案 0 :(得分:3)

你可以这样做:

if(window.location.hash){
    window.location.href = window.location.href.replace(/#.*/,'');
}

答案 1 :(得分:1)

您需要查看window.location.hash,它存储您要删除的值,因此如果 值,您只想运行代码在那个变量中。

if(window.location.hash != ''){
    // code here
}

答案 2 :(得分:1)

您应该使用window.history.pushState代替window.location.href https://developer.mozilla.org/en-US/docs/DOM/Manipulating_the_browser_history

答案 3 :(得分:1)

如果您愿意使用jQuery,请参阅https://stackoverflow.com/a/8683139/618649以获取一个简单的解决方案,只需禁用包含#的所有网址。

在此示例中,您可以全天点击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>