0

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

Page1Page2

page1首先,我从to导航page2并设置 url 哈希,而不是我的 url 将变为:

 http://localhost:48785/page2#id

我正在使用以下代码设置哈希:

window.location.hash = "id";

比我按下浏览器后退按钮并转到上一页即page1。到目前为止,一切工作正常。

当我在 page2 上设置哈希两次时,就会出现此问题。喜欢:

 http://localhost:48785/page2#id

 http://localhost:48785/page2#id2

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

为什么在 page2 上设置哈希两次后后退按钮不带我到上一页,即 page1?

4

4 回答 4

0

在此处输入链接描述,您可以使用 History API 并尝试从浏览器中删除历史记录,以便您可以退出循环

于 2013-04-27T05:54:15.823 回答
0

it looks like you can use history API like it described here http://www.thecssninja.com/javascript/stealing-history-api

于 2013-04-27T05:14:46.970 回答
0

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

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

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

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

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

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

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

于 2013-04-27T05:56:36.007 回答
0

这就是浏览器后退按钮应该工作的方式。它可以追溯到浏览器历史中的最后一个 url 更改。

于 2013-04-27T04:53:15.660 回答