这可能是一个简单的问题,我相信我在这里遗漏了一些东西。
我要做的就是在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);
这会让页面重新加载所有的疯狂...不是我想要的。对此有何看法?
答案 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>