#_reader### 问题分析:onbeforeunload
事件中的 jQuery.ajax
无法正常工作的原因及解决方案
onbeforeunload
事件:在用户关闭页面或导航离开前触发,常用于提示保存未提交的数据。jQuery.ajax
),导致请求无法完成。async: false
)。XMLHttpRequest
的同步模式(async: false
)已被废弃,部分浏览器(如 Chrome)已禁止在 beforeunload
中使用。onbeforeunload
的执行时间极短,可能无法等待异步请求完成。navigator.sendBeacon
unload
事件 + fetch
的 keepalive
fetch
的 keepalive
选项允许请求在页面卸载后继续。beforeunload
时将数据保存到 localStorage
或 sessionStorage
。sendBeacon
和 fetch + keepalive
支持现代浏览器,需测试目标环境。sendBeacon
对数据量有限制(通常约 64KB)。beforeunload
提示用户“数据保存中,请勿立即关闭”。beforeunload
,改为定时或触发式保存。// 尝试用 sendBeacon,失败则降级到 localStorage
window.addEventListener('beforeunload', function(e) {
const data = { key: 'value' };
const blob = new Blob([JSON.stringify(data)], { type: 'application/json' });
if (!navigator.sendBeacon('/save-data', blob)) {
localStorage.setItem('unsavedData', JSON.stringify(data));
}
});
通过上述方法,可确保数据在页面关闭时可靠保存。
没有搜到相关的文章