History.go(-1)不适用于具有指向同一页面部分的链接的页面

时间:2012-05-17 12:30:37

标签: javascript browser-history

我遇到了问题。我有一个网页,我使用后退按钮锚链接,使用的代码是ONCLICK="history.go(-1)"。同一页面有许多锚链接和相关部分。

当我转到包含后退按钮并立即点击后退按钮的页面时,后退按钮正常工作。

如果我转到包含后退按钮的页面,然后点击指向同一页面中某个部分的锚点链接,然后点击后退按钮,那么它永远不会转到上一个网页,而不是转到部分网址。

3 个答案:

答案 0 :(得分:2)

通过新的历史记录API,您可以manipulate the browser history

History.js可帮助您以跨浏览器的方式实现此目标。

我已经快速创建了一个small fiddle来说明它正在运行并使用jQuery进行事件处理(这不是生产代码,只是一个演示,可以在我的Chrome中运行)。

$('.anchor').click(function () {
    history.replaceState({}, '', this.href);
});

答案 1 :(得分:1)

如果是这样,您可以使用javascript通过简单地使用此行来解决此问题。

使用history.go() JavaScript函数,如下所示:

<a href="javascript:window.history.go(-1);">Go back</a>

答案 2 :(得分:0)

也许你可以尝试一个计算点击“部分”链接的次数的计数器

也许类似的东西(使用jQuery,但也许某些人会去,并将此代码更改为漂亮的纯JavaScript):

var count = 0;
var historyValue = -1;
$(".sectionlinks").click(function () {
    ++count;
    window.historyValue = -(count + 1);
})​

您的所有部分链接都有一个sectionlinks类。

然后你可以在你的背链上做:

<a onclick="history.go(historyValue)">My Back Link</a>

请参阅此小提琴演示:http://jsfiddle.net/RRcyF/2/