【发布时间】:2019-10-29 09:29:48
【问题描述】:
我正在构建一个渐进式网络应用程序,我也想在离线模式下运行。这意味着我正在使用服务工作者(工作箱)缓存所有 JavaScript、CSS、字体等,并将应用程序需要的任何内容保存在 localStorage 中,以免它崩溃。例如,如果用户想在没有活动的 Internet 连接时发送消息/上传图像,我将其存储在 localStorage 中,以便他可以在 Internet 连接恢复在线时重新发送,而无需再次上传。
当前的功能是当设备没有互联网连接时,我将上传的文件保存在本地存储中,这样当您重新在线时,您无需再次上传,只需点击“重新发送”按钮即可重新发送现有的上传文件(图像或视频)并将其发送到服务器。
当我在 Mac 上的 Chrome 上本地运行时一切正常,当我在 iPhone 上尝试时出现问题,我收到此错误:
Unhandled Promise Rejection: QuotaExceededError: The quota has been exceeded.
它也不适用于 Android 设备。我怎样才能绕过这个错误,仍然保持在离线模式下运行应用程序的功能?
这不是 Safari 中的隐身模式。
let files = localStorage.files ? JSON.parse(localStorage.files) : [];
files.push(file);
localStorage.files = JSON.stringify(files);
【问题讨论】:
标签: javascript reactjs web-applications local-storage progressive-web-apps