我的Web应用程序的用户已请求“离线模式”,该模式将其工作存储在硬盘驱动器上,而互联网连接不可用。他们可能会离线几分钟到几周,因此,为了防止丢失他们的工作,即使在存储压力下,我也必须能够持久存储数据(使用IndexedDB可能没有适当的权限数据丢失)。
我读到on Google Developers可以使用异步navigator.storage.persist()
方法来请求用户存储文件的权限,但这在Chrome上不起作用-诺言总是返回false
而没有提示用户。
然后,我读到here,Chrome可能会决定不显示权限弹出窗口,而是根据预先计算的决定授予或拒绝持久性存储权限。这似乎是基于以下情况:
如果以上任何条件为真,则该权限已被授予,否则,该权限将被自动拒绝。这意味着在Chrome中,navigator.storage.persist()
和navigator.storage.persisted()
之间没有区别,即使第一个应该是权限请求,第二个应该是权限检查。
我已经构建了用于请求持久存储权限的应用内用户界面,因此,我所需要的就是确保权限弹出窗口显示在Chrome中的可靠方法,以便用户可以授予或拒绝该权限。由于我无法控制前三个条件,或者无法合理地要求用户满足它们,因此,我似乎唯一的选择是请求显示推送通知的权限,这很不幸,因为这不是 我需要的许可,我对显示推送通知没有兴趣。这样的权限请求可能会使用户感到困惑。
是否有更清晰,用户友好的方法来获得在Chrome中使用持久性存储的权限?
答案 0 :(得分:3)
如果以上任何条件为真,则该权限已被授予,否则,该权限将被自动拒绝。
这是不正确的;仍然必须请求许可。在请求/授权之前,原产地仍将被视为“尽力而为”。该站点必须明确请求权限。您可以在从未请求过许可的网站上致电persisted()
之前先致电persist()
来观察到这一点。
我所需要的是确保权限弹出窗口显示在Chrome中的可靠方法,以便用户可以授予或拒绝该权限
Chrome对此权限没有权限弹出窗口,因此没有这种方法。
首选模型是在授予许可之前不提供有关脱机功能的保证;也就是说,要求获得许可,并且在授予后仅显示任何形式的“您的数据绝对绝对可以脱机使用”保证。
答案 1 :(得分:0)