使用哈希标记时阻止页面重定向

时间:2011-06-06 14:19:19

标签: javascript redirect hashcode

有没有办法将页面重定向到特定的哈希值,但如果页面重新加载已经存在的哈希值,则会阻止重定向?最好用javascript?

例如:

在www.mysite.com中输入重定向到---> www.mysite.com/index.html#news

然后用户点击导航到同一页面下方的新位置的链接:www.mysite.com/index.html#articles

我想要的是在刷新时阻止重定向,这样如果用户刷新页面,它们就会保留在#articles上,而不是被重定向回#news。

本质上,重定向的唯一目的是只有在没有哈希(#)的情况下输入网址时才会将人们带到#news。

2 个答案:

答案 0 :(得分:1)

您可以检查window.location.hash属性并根据其值设置位置href。例如:

<script type="text/javascript">
  // Redirect to "#news" if there is no hash in the URL.
  if (window.location.hash == '') {
    window.location.href = 'http://www.mysite.com/index.html#news';
  }
</script>

顺便说一下,您似乎可以使用似乎做同样事情的window.locationdocument.locationIt is unclear which is the preferred target(窗口或文档)。

答案 1 :(得分:0)

Anchor重定向是一个仅限客户端的构造。服务器完全不知道有人点击了“#articles”这一事实 - 并且URL在他们这样做时不会改变,所以刷新总是会让你找到相同的网址。

解决方案是在点击锚链接时重写URL。您可以通过分配到window.location.href来更改它。因此,向任何哈希锚添加一个单击处理程序,并更改URL以合并新的页内锚标记。