从 Chrome 和 Firefox 访问本地文件的 localStorage

问题描述 投票:0回答:1

我在我的(Windows)计算机上使用多个带有 JavaScript 的 HTML 页面来收集和分析数据。所有文件均在本地提供,无需互联网,例如

file:///C:/work1/data1.html

我发现 Chrome(和 Edge)和 Firefox 之间存在以下令人惊讶的差异。

  1. 在 Firefox 中,
    localStorage
    的键由每个文件“拥有”
  2. 在 Chrome 和 Edge 中,这些由计算机“拥有”(或者可能由用户“拥有”?)

从某个页面存储的数据可以在 Chrome 和 Edge 中从任何其他页面自由访问,甚至可以同时访问。带有

window.localStorage.setItem('key', 'value')
的数据集可以通过
window.localStorage.getItem('key')
在当前和本地存储在同一计算机或设备上的任何其他 .html 文件中读取。

相反,在 Firefox 中,某个文件中的数据集(例如 data-1.html)只能从该文件访问。更改文件夹或文件名和数据已经不复存在,因为 Firefox 分别为每个文件存储一组单独的键值。

  1. 这种不同行为的原因是什么?
  2. 这是“众所周知”的事实吗?
  3. 有办法改变这种行为吗?

即我可以让 Chrome 像 Firefox 一样运行,和/或 Firefox 像 Chrome 一样运行吗?

google-chrome firefox scope local-storage microsoft-edge
1个回答
0
投票

回答您的问题。

这种不同行为的原因是什么?

选择你的答案:“天知道”、“因为 Mozilla 开发人员决定如此”?

每个定义和每个逻辑应该在文件之间共享

  1. 它们在每个窗口或选项卡上共享
  2. 它们在服务器端服务时共享(其中服务器或域充当设备,子域或服务器文件夹充当本地文件夹)
  3. 它们在 Chrome 和 Edge(可能还有所有其他浏览器)中的文件之间共享

为什么 Firefox 会有差异?嗯...去 Mozilla 问问他们。不要指望切肉刀的答案。

这是“众所周知”的事实吗?

我认为这是基于意见的问题,不会改变这里的任何内容。你还没有发现绝密秘密,你还没有开始新的阴谋论。或者类似的事情,当然。

你知道这一点,我知道这一点,许多 Mozilla 开发人员可能都知道这一点(前提是这不是一个愚蠢的错误,但我不相信如此)并且可能有成千上万的人也知道这一点了解这个。

我认为这是一个“众所周知”的事实,无论它对你意味着什么。

有办法改变这种行为吗?

不,不是真的。

您可以切换到 Firefox 浏览器的 sessionStorage,这似乎可以在文件之间共享

您可以尝试使用像 xdLocalStorage 这样的库进行实验。这个特殊的已经七年没有更新了,对我个人来说根本不起作用(抛出一些奇怪的错误)。但也许你可以让它发挥作用。

结论

我们不应该在这里发表意见,但我会破例。对我来说,Firefox 是一个有点奇怪的浏览器。由于多种原因,我大约 20 多年前就停止使用它了。你(和我)刚刚发现的这个东西只是另一个例子。

作为开发人员,您能做的事情并不多。 Firefox 的行为显然是常见规则和逻辑的例外,因此继续使用此浏览器的用户必须接受这样的事实:您的页面无法在他们的浏览器中正常工作。阿门。

© www.soinside.com 2019 - 2024. All rights reserved.