【发布时间】:2013-04-27 04:46:57
【问题描述】:
我正在使用 url 哈希来滚动页面。我正在做的是,说我有 2 页:
Page1 和 Page2
首先,我从 page1 导航到 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?
【问题讨论】:
-
那是因为这些 url 字符串已添加到您的历史记录中。将哈希添加到 url 被视为新 url,因此添加到此历史记录中。因此,它将带您到最后使用的 url。哈希通常用于强制执行此浏览器历史行为。
-
问题是当我导航到 page2 时,我在 page2 上将 url hash 更改为 id,然后我再次将 url hash 更改为 id2,现在我当前的 url 类似于
http://localhost:48785/page2#id2,现在我开始按下后退按钮。第一次点击我导航到#id,我的网址变成http://localhost:48785/page2#id,第二次点击我除了在page1上导航,我的网址应该是http://localhost:48785/page1,但它会在#id2上导航我,即http://localhost:48785/page2#id2,为什么? -
可以说它没有发生就足够了 :-) .. 有一些代码吗?我会尝试设置一些东西,但逻辑与你的说法背道而驰。我很想看看。
-
我尝试重新创建您的场景,但在多个浏览器中没有看到这种行为。
-
@Daniel 我正在更改
document.ready事件的位置哈希,以滚动到 id 等于哈希值的 div'
标签: javascript jquery