gpt4 book ai didi

jquery - 使用 "unload"事件自动保存并在注销时调用 ajax : order of actions is causing an issue

转载 作者:行者123 更新时间:2023-12-03 22:25:12 24 4
gpt4 key购买 nike

我正在在线编辑器上使用自动保存功能。

当用户离开页面时(通过 unloadbeforeunload 事件检测到),我将发送 AJAX 请求 (async = false) 来保存数据。

我在 Firefox 中遇到问题,有时在 Chrome 中也遇到问题,因为发生了一系列事件:

  • 事件已触发
  • 请求发送
  • 页面更改且用户断开连接
  • 服务器分析请求 => 问题!
  • 浏览器收到请求响应

当然,由于用户已断开连接,因此无法处理“保存”请求。

有没有一种方法可以与所有浏览器兼容,在页面实际更改之前等待 AJAX 调用的响应?

最佳答案

ori的回答是正确且完整的。

但从您的情况来看,您可以使用解决方法。

您可能对两个 JavaScript 功能感兴趣:localStorage 和 sessionStorage(除了浏览器关闭时清除第二个存储之外,它是相同的,因此您可能会选择第一个)

这个想法是将数据保存到 localStorage,并使用一些元数据来说明是否保存了更改。如果用户离开页面但转到您服务中的另一个页面,甚至稍后返回 - 您可以再次发送数据,并包含一些由于页面卸载而未保存的信息。

概念验证代码:

$(window).bind('unload', function() {
localStorage.setItem('unsavedData',data);
localStorage.setItem('unsaved',true);
});

$(document).ready(function(){
if(localStorage.getItem('unsaved')){
//ajax send
localStorage.setItem('unsaved',false);
}
});

[编辑]

我已经成功地将 JSONP 与 unload 一起使用,并且它似乎在大多数情况下都能工作,但我还没有在负载和慢速网络上测试它。

关于jquery - 使用 "unload"事件自动保存并在注销时调用 ajax : order of actions is causing an issue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6333721/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com