我使用此javascript代码在我的移动应用中分配了一个后退按钮:
//Add back button code onclick
$("#backLocation").replaceWith("<a href=\"#\" ><img id=\"backClick\" style=\"vertical-align: middle;\" src=\"img/back.png\" height=\"30\" width=\"30\"> </a>");
$(document).on('click', "#backClick", function (e) {
//go back a page
e = e || window.event;
e.preventDefault();
window.history.back();
});
如果您有一页深度,代码效果很好。但是,如果你深入两页并使用onClick返回到原始页面,则会遇到一些问题。
例如:
Page1 - &gt;第2页: 如果你在页面上使用上面的javascript,你将回到第一页。确切地说它应该如何运作。
Page1 - &gt;第2页 - &gt;第3页:这就是事情变得奇怪的地方。如果你在第三页并单击我的按钮来执行上面的javascript它会让你完美地回到Page2。在第2页上,如果您尝试返回到Page1,则代码在首次单击时不起作用,但在第二次单击时,它将返回到第1页。
更新
我发现了奇怪的行为来自哪里。要访问Page2-&gt; Page3,您需要在转到第3页之前单击链接以弹出窗口。弹出按钮以href =“#”启动弹出窗口,因此在转到page3之前添加.html#。
当我们回到Page2时,我们真的在第2页#,点击后退我们到第2页,这就是为什么我们需要点击两次才能回到Page1。
有关如何解决此问题的任何想法?我尝试在没有磅的情况下制作href =“”,但这只是弹出不起作用。
答案 0 :(得分:1)
window.history.back()不接受参数,如果你想要返回多个页面,你需要window.history.go(-2)。 在MDN网站上有一个详细的解释,这里是: https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Manipulating_the_browser_history
答案 1 :(得分:0)
根据更新,修复此问题的简单方法是弹出使用a并添加onClick。
通过这样做,我不会将#添加到历史中。