我正在尝试实现一些代码,以防止后退按钮在我的网站中的页面上执行任何操作。页面发布一个表单来处理付款,因此不希望用户按回来,否则最终会出现奇怪的用户体验。有服务器端代码来处理它,但希望尽可能地防止客户端。
我的问题是即使我使用像这里提到的方法:how to stop browser back button using javascript
问题在于,虽然页面现在永远不会返回,但只要按下后退按钮,表单POST就会被取消。(使用Chrome浏览器。)
我目前的代码是:
function() {
if(window.history && window.history.pushState) {
window.history.pushState({ page: 1 }, $(document).find("title").text(), null);
window.addEventListener('popstate', function (e) {
e.preventDefault();
e.stopPropagation();
window.history.pushState({ page: 1 }, $(document).find("title").text(), null);
});
}
else {
window.location.hash = "pp";
window.onhashchange = function (e) {
e.preventDefault();
e.stopPropagation();
window.location.hash = "pp";
};
}
}
我能在这做什么吗?
答案 0 :(得分:0)
不幸的是,你无能为力。您可以停止按后退按钮(更改页面)的最终结果,但无法停止点击它的副作用(导致当前待处理的请求停止) )。
您可以做的最好的事情是按下后退按钮时捕获,确定表单是否已发送但未收到响应,然后提醒用户表单可能已发送。然后,您可以尝试将用户定向到下一页,如果没有收到,您可以将其设计为回到付款页面。
这样的问题很难分析边缘情况。 :)