Javascript 防止通过“后退”按钮取消表单发布

Javascript 防止通过“后退”按钮取消表单发布,javascript,jquery,html,asp.net-mvc,back-button,Javascript,Jquery,Html,Asp.net Mvc,Back Button,我正在尝试实现一些代码,以防止后退按钮在我的站点的页面上执行任何操作。页面发布一个表单来处理付款,所以不要希望用户按下back键,否则它会导致一种奇怪的用户体验。有服务器端代码来处理它,但希望尽可能在客户端阻止它 我的问题是,即使我使用这里提到的方法: 问题在于,尽管页面现在永远不会返回,但只要按下“返回”按钮,表单POST就会被取消(使用Chrome浏览器) 我目前拥有的代码是: function() { if(window.history && win

我正在尝试实现一些代码,以防止后退按钮在我的站点的页面上执行任何操作。页面发布一个表单来处理付款,所以不要希望用户按下back键,否则它会导致一种奇怪的用户体验。有服务器端代码来处理它,但希望尽可能在客户端阻止它

我的问题是,即使我使用这里提到的方法:

问题在于,尽管页面现在永远不会返回,但只要按下“返回”按钮,表单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";
            };
        }
    }

我能在这里做点什么吗?

不幸的是,你能做的不多。您可以停止按下后退按钮(更改页面)的最终结果,但无法停止单击该按钮的副作用(导致当前挂起的请求停止)

您所能做的最好的事情是在按下后退按钮时捕获,确定表单是否已发送但未收到响应,然后提醒用户表单可能已发送。然后,您可以尝试将用户引导到下一个页面,如果没有收到付款页面,您可以将其设计为返回到付款页面


这样的问题很难针对边缘情况进行分析。:)

不幸的是,你能做的不多。您可以停止按下后退按钮(更改页面)的最终结果,但无法停止单击该按钮的副作用(导致当前挂起的请求停止)

您所能做的最好的事情是在按下后退按钮时捕获,确定表单是否已发送但未收到响应,然后提醒用户表单可能已发送。然后,您可以尝试将用户引导到下一个页面,如果没有收到付款页面,您可以将其设计为返回到付款页面


这样的问题很难针对边缘情况进行分析。:)

最好的方法就是使用模式并完成它。最好的方法就是使用模式并完成它。