我确实通过以下函数防止了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
};
但是,在出现“Reload site?”消息时,save_user_data_to_indexed_db()
函数没有执行。我想,如果我可以在显示消息时执行函数,我也许可以通过编程方式自动回答相同的对话框,让浏览器继续重新加载页面。
有没有办法让浏览器等待这种操作?
1条答案
按热度按时间pepwfjgg1#
一般来说,没有办法让浏览器等待。在这种情况下,我经常做的是同步地将数据写入中间位置,如localStorage,然后在以后有时间时(如下次再次加载页面时)或从服务工作者内部异步地将数据复制到indexedDB。