我不明白为什么在Firefox中window.history.back()
可以使用按钮:
<button onclick="window.history.back()">Go back</button>
但它不适用于链接:
<a onclick="window.history.back()">Go back</a>
有什么区别?
说明这一点的一个例子:
的index.html
<!DOCTYPE html>
<html>
<body>
<h1>First page</h1>
<br/>
<a href="second.html">Second</a>
</body>
</html>
second.html
<!DOCTYPE html>
<html>
<body>
<h1>Second page</h1>
<a href="third.html">Third</a>
<br/>
<br/>
<button onclick="window.history.back()">Go Back (button)</button>
<br/>
<a href="javascript: void(0);" onclick="window.history.back()">Go Back (a)</a>
</body>
</html>
third.html
<!DOCTYPE html>
<html>
<body>
<h1>Third page</h1>
<br/>
<button onclick="window.history.back()">Go Back (button)</button>
<br/>
<a href="javascript: void(0);" onclick="window.history.back()">Go Back (a)</a>
</body>
</html>
情境:
Plunker example (注意!在Firefox上运行)
如果您使用返回(按钮),则可以使用。在这种情况下<a onclick
和<button onclick
有什么区别?
答案 0 :(得分:12)
您正面临此问题(quoted from vikku.info):
但是在我导航到后按下后退按钮时发生了什么 各个页面被锁定在最后两个导航页面之间。
评论中有人对这个问题有所了解。
onclick
属性时,您附加了一个用于单击链接的附加事件处理程序。但是,浏览器仍将处理一些原生逻辑,因此它仍会将当前页面添加到历史记录中; href
属性时,实际上是覆盖了浏览器的 native 逻辑,因此它不会将当前页面添加到历史记录中; < / LI>
简单,肮脏的解决方案
HTML:
<a href="javascript:window.history.back();">Back</a>
改进的解决方案
我还创建了一个使用原生preventDefault
功能(Plunker example)的示例(MDN on preventDefault)。在这种情况下,不需要在href
属性中编写javascript。现在,您可以通过链接到例如主页来支持不使用javascript的用户。您最好还避免使用内联事件处理程序。
HTML:
<a href="index.html" id="backButton">Back</a>
使用Javascript:
var backbutton = document.getElementById("backButton");
backbutton.onclick = function(e){
e = e || window.event; // support for IE8 and lower
e.preventDefault(); // stop browser from doing native logic
window.history.back();
}
答案 1 :(得分:1)
答案 2 :(得分:1)
试试这个:
$("#back").click(function(e) {
e.preventDefault();
history.back(1);
})
或强>
<a href="javascript:void(0);" onclick="window.history.go(-1); return false;"> Link </a>
答案 3 :(得分:0)