在我的web应用程序中,我确实通过以下函数来防止页面重新加载:
window.onbeforeunload = (event) => {
const e = event || window.event;
// Cancel the event
e.preventDefault();
save_user_data_to_indexed_db();
if (e) {
e.returnValue = ''; // Legacy method for cross browser support
}
return ''; // Legacy method for cross browser support
};
但是,在"重新加载站点?"期间,save_user_data_to_indexed_db()
函数没有被执行。消息。我想,如果我能在显示消息期间执行我的函数,我也许可以自动以编程方式回答相同的对话框,并让浏览器继续重新加载页面。
有没有办法让浏览器等待这种操作?
一般来说,没有办法让浏览器等待。在这种情况下,我经常做的是同步地将数据写入一个中间位置,比如localStorage,然后在有时间的时候(比如下次再次加载页面的时候),或者从service worker中异步地将数据复制到indexedDB。