点击刷新按钮时是否可以停止页面上发生的所有请求/脚本?
我有一个 $.ajax 请求,需要几分钟的时间。我尝试在卸载事件中执行 window.stop() ;我尝试过 xhr = $.ajax(...);和 xhr.abort();以及通过互联网找到的任何其他方法都没有效果。
这可能吗?为什么浏览器仍然等待该请求完成并发回响应而不刷新页面?
稍后编辑(已解决):看来等待问题实际上是来自服务器。如果在ajax调用中,脚本使用SESSION,那么即使我们中止xhr,网页也会卡住直到请求完成。
这是为什么?说明:
session 数据通常在脚本终止后存储,无需调用 session_write_close(),但由于 session 数据被锁定以防止并发写入,因此任何时候只有一个脚本可以对 session 进行操作。当将框架集与 session 一起使用时,由于这种锁定,您将经历框架一一加载。您可以在 session 变量的所有更改完成后立即结束 session ,从而减少加载所有帧所需的时间。
最佳答案
也许尝试在刷新之前取消,如 here 所示?
window.onbeforeunload = function(event) {
xhr.abort();
};
关于javascript - 停止浏览器请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14162909/