当点击刷新按钮时,是否可以停止页面上发生的所有请求/脚本?
我有一个需要几分钟的 $.ajax 请求。我试图在卸载事件中执行 window.stop() ;我试过 xhr = $.ajax(...); 和 xhr.abort(); 以及在互联网上找到的任何其他方法,但没有任何效果。
这甚至可能吗?为什么浏览器仍然等待该请求完成并发送回响应而不刷新页面?
稍后编辑(已解决):似乎等待问题实际上来自服务器。如果在 ajax 调用中,脚本使用了SESSION,那么网页将冻结直到请求完成,即使我们中止了 xhr。
这是为什么?解释:
会话数据通常在脚本终止后存储,无需调用 session_write_close(),但由于会话数据被锁定以防止并发写入,任何时候只有一个脚本可以对会话进行操作。将框架集与会话一起使用时,由于这种锁定,您将体验到一个一个加载的框架。您可以通过在会话变量的所有更改完成后立即结束会话来减少加载所有帧所需的时间。
问问题
2727 次
1 回答
5
也许像这里一样在刷新之前尝试取消?
window.onbeforeunload = function(event) {
xhr.abort();
};
于 2013-01-04T18:59:57.663 回答