webkit / Chrome 历史记录回退(-1) onclick与href的区别

18

每个人都知道这个问题,但我会再重复一遍:

<a href="#" onClick="history.go(-1)">Back</a>

不支持基于WebKit的浏览器(Chrome、Safari、Mxthon等)。

另一种方法(应该可以工作),但实际上不起作用的是:

<a href="#" onclick="javascript:window.history.back(-1);">Back</a>

您可以这样做-它有效!(但URL提示中显示了JS)
<a href="javascript:window.history.back(-1);">Back</a>

为了在onclick事件中使用JS,你可以这样做(虽然可行,但请看下面的注释):
<a onclick="javascript:window.history.back(-1);">Please try again</a>

缺少href会使其正常工作,但它将不会显示为可点击的链接,您可以应用CSS使其看起来像链接,应用蓝色、下划线和光标手形,但谁想要那样呢?


3
  1. 提出问题并立即发布答案的意义何在?
  2. onclick="javascript:" 是毫无意义的,省略掉 javascript:
  3. history.back() 不接受任何参数,它只是 back() 的等价形式,相当于 history.go(-1)
- Christoph
请不要在标题中添加“已解决”。如果您的答案有效,请接受它。 - ChrisF
2
  1. 重点是让谷歌为寻找答案的人找到问题,立即回答是因为我花了一些时间测试每个情况和浏览器,所以为什么不呢? re: 3) 这是我发现其他人发布的内容,我不说他们是正确的。我只列出了一些方法,并指出了我能看到的东西,并给出了在列出的浏览器中有效的答案(对我而言)。批评总是很容易的 :) 注意身体。
- Pawel Cioch
3个回答

37

最终的解决方案,在IE、FF、Safari、Chrome、Opera和傲游浏览器中经过测试:

<a href="#" onclick="window.history.back();return false;">Back</a>

return false; 后不要忘记加分号 ;


5
在事件处理程序中写入javascript:是没有意义的。 - SLaks
令人惊奇的是,对于不同的人和浏览器,有许多方法都会产生不同的效果。如果现在无法正常工作,那么可能是浏览器的新版本现在进行了不同的解释... - Pawel Cioch
在编程中,使用内联JavaScript可能并不是一个好主意。请参考http://programmers.stackexchange.com/questions/86589/why-should-i-avoid-inline-scripting - Adriano
3
我不确定为什么我的回答总是被编辑,我建议您发布自己的回答,而不是修改我的回答,因为它已经失去了我的权威性。 - Pawel Cioch
谢谢,那对我有用,但您能解释一下为什么添加“return false”语句可以使其在Safari(iOS)上工作吗? - Alouini Khalil
@AlouiniKhalil https://dev59.com/YHVC5IYBdhLWcg3w-mVO - Pawel Cioch

2

即使使用history.go(-1)也能正常运行...

对于Chrome、IE和Mozilla,我进行了测试,都可以正常运行。请使用以下代码:

<a href="#" onclick="history.go(-1);return false;" style="text-decoration:underline;">Back</a>

0

这是目前所有浏览器上都有效的唯一方法:

<script>
function goBack() {
    history.go(-1);
}
</script>
<a onclick="goBack()">Back</a>

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