localStorage.getItem() 在不同的浏览器中给出不同的结果

localStorage.getItem() gives a different result in different browsers

我正在使用 PhantomJS。我想在加载维基百科第一页时比较 PhantomJS 与 Google Chrome 的行为。根据我的观察,两种浏览器都生成了一个触发方式不同的请求。该请求中有一个参数在每个浏览器中采用不同的值。正如我所发现的,在维基百科的 JavaScript 文件中有一行浏览器开始表现不同。该行如下:

raw = localStorage.getItem(mw.loader.store.getStoreKey());

使用 Google Chrome 时 'raw' 的值为 'null'。但是,使用 'PhantomJS' 时 'raw' 的值是一些 JavaScript 函数。这种差异导致两种浏览器的行为不同,并在最后为其中一个参数分配不同的值。

我确定在执行此行之前,没有 localStorage.setItem() 行,我想知道为什么 PhantomJS 可以将这些函数加载到 'raw' 中?这些功能来自哪里? PhantomJS 对 'localStorage' 命令有什么问题吗?

这个问题的原因是 PhantomJS,尽管像 Chrome 这样的其他浏览器,不会自动删除 localStorage 文件。因此,在每个 运行 中,它都使用先前为特定网站保存的信息。为了避免这个问题,我们需要在 运行ning PhantomJS 之前删除 localStorage 文件。