【问题标题】:History.go(-1) not working for the page that has links to the sections of same pageHistory.go(-1) 不适用于具有指向同一页面部分的链接的页面
【发布时间】:2012-05-17 12:30:36
【问题描述】:

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

当我转到包含 back 按钮的页面并立即单击 back 按钮时,back 按钮可以正常工作。

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

【问题讨论】:

  • 它应该是这样工作的。锚链接是历史的有效部分。
  • 谢谢.. bazmegakapa。以上如何实现。有什么想法吗?
  • 考虑使用 location.replace() 然后作为你的锚链接。
  • 谢谢..杰克。如何获取以前的 URL 以使用 location.replace。有什么想法吗?

标签: javascript browser-history


【解决方案1】:

通过新的 History API,您可以manipulate the browser history

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

我很快创建了一个 small fiddle 来说明它的工作原理并使用 jQuery 进行事件处理(这不是生产代码,只是一个演示,在我的 Chrome 中工作)。

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

【讨论】:

  • 谢谢bazmegakapa。如何操纵同一页面中的锚链接点击次数。你能提出一个想法吗?
  • @sridhar 添加了一个小演示。
【解决方案2】:

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

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

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

【讨论】:

    【解决方案3】:

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

    可能是这样的(使用 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/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-07
      • 2013-05-19
      • 2017-09-10
      • 1970-01-01
      • 1970-01-01
      • 2020-09-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多