在javascript中使用哈希网址问题?

时间:2013-04-27 04:46:58

标签: javascript jquery

我正在使用url hash滚动页面。我正在做的是,说我有2页:

Page1Page2

首先,我从page1导航到page2并设置网址,而不是我的网址:

 http://localhost:48785/page2#id

我使用此代码设置哈希:

window.location.hash = "id";

我按下浏览器后退按钮并转到上一页,即page1。到目前为止,每个人都可以正常工作。

当我在第2页上设置哈希两次时出现问题。像:

 http://localhost:48785/page2#id

 http://localhost:48785/page2#id2

现在当我按下浏览器后退按钮时,它只是在#id和#id2之间来回导航。

为什么在第2页上设置哈希两次后,后退按钮没有将我带到上一页,即page1?

4 个答案:

答案 0 :(得分:0)

这就是浏览器后退按钮的工作方式。它可以追溯到browsers history中的最后一个网址更改。

答案 1 :(得分:0)

您似乎可以使用此处所述的历史记录API http://www.thecssninja.com/javascript/stealing-history-api

答案 2 :(得分:0)

enter link description here您可以使用History API并尝试从浏览器中删除历史记录,以便您可以退出循环

答案 3 :(得分:0)

因为HTML5 : 6.6.9 : Navigating to a fragment identifier说:

  

当用户代理应该导航到片段标识符时,用户代理必须运行以下步骤:

     
      
  1. 删除当前条目后浏览上下文的会话历史记录中的所有条目。如果当前条目是会话历史记录中的最后一个条目,则不会删除任何条目。   这不一定必须影响用户代理的用户界面。

  2.   
  3. 删除历史遍历任务源排队的任何与顶级浏览上下文文档系列中的任何Document对象关联的任务。

  4.   
  5. 在History对象的末尾追加一个新条目,表示新资源及其Document对象和相关状态。其URL必须设置为用户代理导航到的地址。标题必须保留未设置。

  6.   
  7. 将历史记录遍历到新条目,并设置异步事件标志。这将滚动到现在文档地址中给出的片段标识符。

  8.   

这样做可以使文档中的链接以与文档之间的链接相同的方式退出。如果按下后退按钮仅作为某些链接导航的撤消而不是其他链接导航,则可能会导致用户混淆,尤其是当滚动可能导致所显示内容的完全更改时。