onclick="javascript:history.go(-1)" 在Chrome中无法正常工作。

27

这段代码在FF中运行良好,可以将用户带回上一页,但在Chrome中无法实现:

<a href="www.mypage.com" onclick="javascript:history.go(-1)">Link</a>

怎么修复?


5
JavaScript 协议不是必需的。 - karaxuna
9个回答

74

你应该使用 window.history 并返回 false,这样浏览器就不会导航到 href (即默认行为)。

<a href="www.mypage.com" onclick="window.history.go(-1); return false;"> Link </a>

谢谢你的回答。我使用了history.back();,但在Chrome中出现了一些不好的bug :) - Andrew Starlike
为什么要创建一个指向页面(www.mypage.com)的链接,只是为了用 on-click 事件覆盖它,并执行其他操作,而不是将用户重定向到该页面? - undefined

10
使用下面这个方法,比 history.go(-1) 更好。
<a href="#" onclick="location.href = document.referrer; return false;"> Go TO Previous Page</a>

1
它对我也起作用了,但如果用户直接访问页面,它就不会起作用。 - Pedro Lobito
如果您要返回到表单,则 history.go(-1) 是一个更好的选择,因为它会将大多数字段返回到提交之前包含的信息。 - Samuel Ramzan
你说的是一个有道理的观点,但如果它不起作用,这就是为什么提出这个解决方案的原因。当然,如果我们想回到之前的状态,并不意味着我们也需要我们输入到表单中的数据,一旦我们提交了它,它可以自动地被浏览器使用。感谢您的建议。 - Majid Ali Khan

8

为什么不抛弃内联JavaScript,改用以下方式?

内联JavaScript被认为是一种过时的不良实践。

注释

为什么使用addEventListener

addEventListener是W3C DOM中指定的注册事件监听器的方法。它的好处如下:

它允许添加多个事件处理程序。这对于需要与其他库/扩展一起使用的DHTML库或Mozilla扩展特别有用。它使您对激活侦听器的阶段(捕获vs.冒泡)具有更精细的控制。它适用于任何DOM元素,而不仅仅是HTML元素。

<a id="back" href="www.mypage.com"> Link </a>

document.getElementById("back").addEventListener("click", window.history.back, false);

jsfiddle


7

试试这个:

<a href="www.mypage.com" onclick="history.go(-1); return false;"> Link </a>

3
试试这个,伙计,
<button onclick="goBack()">Go Back 2 Pages</button>
<script>
  function goBack() {
    window.history.go(-2);
  }
</script>

1

javascript:history.go(-1);

被用于旧版浏览器IE6中。对于其他浏览器的兼容性,请尝试。
window.history.go(-1);

其中-1表示您要返回的页面数(-1,-2 ...等),而 return false 是必需的,以防止默认事件。

例如:

<a href="#" onclick="window.history.go(-1); return false;"> Link </a>   

1

对我来说有效。在Google Chrome上使用javascript:history.go(-1)没有任何问题。

  1. 要使用它,请确保该标签页具有历史记录。
  2. 输入URL空间中添加javascript:history.go(-1)
  3. 它应该能够工作几秒钟。

0

只需使用这行代码,无需在href属性中放置任何内容:

<a href="" onclick="window.history.go(-1)"> Go TO Previous Page</a>

0

使用带有URL的链接,并具有覆盖它的on-click事件不是一个好主意。如果用户在新标签页中打开链接会怎样?

考虑:

<button id="back">Go back</button>
<script>
document.querySelector("#back").addEvenetListener("click", e => {
    history.go(-1);
});
</script>

或者如果你必须使用链接,至少:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接