我的Web应用程序的用户要求增加“离线模式”,可以在没有互联网连接的情况下将他们的工作存储到硬盘上。他们可能会离线几分钟到多个星期,为了防止数据丢失,我需要能够持久化数据,即使在存储压力下(未经适当授权使用IndexedDB可能导致数据丢失)。
我在Google开发者上读到异步
然后我在这里读到,Chrome可能决定不显示权限弹出窗口,而是根据预先计算的决策授予或拒绝持久性存储权限。这似乎基于以下内容:
- 网站被收藏夹保存(用户有5个或更少的书签) - 网站有高站点参与度 - 网站已添加到主屏幕 - 网站启用了推送通知
如果上述条件中有任何一个为真,则权限已经被授予,如果没有,则会自动拒绝。这意味着在Chrome中,
我已经构建了应用内 UI 以请求持久存储权限,所以我需要的只是一种可靠的方法,在 Chrome 中显示权限弹出窗口,以便用户可以授予或拒绝该权限。由于我无法控制前三个条件,或者合理地要求用户满足它们,因此似乎我的唯一选择是请求显示推送通知的权限,这很不幸,因为那不是我需要的权限,我也不想显示推送通知。这样的权限请求可能会让用户感到困惑。
是否有更清晰、用户友好的方法来获取 Chrome 中使用持久存储的权限?
我在Google开发者上读到异步
navigator.storage.persist()
方法可用于请求用户的文件存储权限,但在Chrome上无法使用 - 承诺总是返回false
而不提示用户。然后我在这里读到,Chrome可能决定不显示权限弹出窗口,而是根据预先计算的决策授予或拒绝持久性存储权限。这似乎基于以下内容:
- 网站被收藏夹保存(用户有5个或更少的书签) - 网站有高站点参与度 - 网站已添加到主屏幕 - 网站启用了推送通知
如果上述条件中有任何一个为真,则权限已经被授予,如果没有,则会自动拒绝。这意味着在Chrome中,
navigator.storage.persist()
和 navigator.storage.persisted()
没有区别,尽管第一个是权限请求,第二个是权限检查。我已经构建了应用内 UI 以请求持久存储权限,所以我需要的只是一种可靠的方法,在 Chrome 中显示权限弹出窗口,以便用户可以授予或拒绝该权限。由于我无法控制前三个条件,或者合理地要求用户满足它们,因此似乎我的唯一选择是请求显示推送通知的权限,这很不幸,因为那不是我需要的权限,我也不想显示推送通知。这样的权限请求可能会让用户感到困惑。
是否有更清晰、用户友好的方法来获取 Chrome 中使用持久存储的权限?