在浏览器中,Safari的私密浏览中的sessionStorage与Chrome的隐身模式和Firefox的私人窗口的工作方式不同?

nop*_*ole 23 safari firefox google-chrome session-storage

看来,对于sessionStorageChrome的隐身模式与Safari的私人浏览和Firefox的私人窗口,它的工作方式不同?我可以在http://www.webdirections.org/blog/webstorage-persistent-client-side-data-storage/上找到一些内容,但它没有说Safari的私人浏览会抛出异常.

以下是我打开"私人浏览"的方式:

  1. 在Mac上的Safari上,单击菜单栏上的"Safari - >私密浏览"
  2. 在Chrome上,使用"文件 - >新的隐身窗口"
  3. 在Firefox上,使用"文件 - >新的私人窗口"

并在Safari上,sessionStorage不起作用,如果我在控制台中执行以下操作:

> sessionStorage["foo"] = 123.4
Error: QUOTA_EXCEEDED_ERR: DOM Exception 22

> sessionStorage["foo"] 
undefined
Run Code Online (Sandbox Code Playgroud)

但在Chrome或Firefox上,sessionStorage照常工作(非私人浏览).就上述sessionStorage问题而言是否准确?

nma*_*ier 27

您的评估几乎准确:

  • Safari将仅使用0私有模式的配额,因此所有设置值的尝试都将失败.根据规范,这有点好,因为规范没有规定最小空间要求.
  • Chrome和Firefox仍然允许您使用存储,但私有存储独立于非私有存储,即在私有模式下设置项目不会反映回非私有模式(localStorage仅对于非常重要).

请注意QuotaExceededError,如果您超过配额,其他浏览器也可以在任何给定时间自由抛出异常.

  • 我有同样的问题并通过在我的布局上加载以下脚本来解决它:<https://gist.github.com/engelfrost/fd707819658f72b42f55>?它检查是否可以使用localStorage,如果没有,它会创建一个以相同方式工作的替代方法.希望这可以帮助 (2认同)
  • 对于较新版本的 Safari,这个答案似乎不再成立。SessionStorage 似乎可以在使用 Safari 进行私密浏览时工作。 (2认同)

Eze*_*wei 6

Safari 最新版本(12.0 版)已经可以访问 sessionStorage,在隐身模式下没有任何问题。 在此处输入图片说明


Kum*_*esh 5

Safari Pivate 模式支持 localstorage 和 SessionStorage。

在此输入图像描述