仅限Firefox(v13)中的localStorage.removeItem()问题

时间:2012-06-27 05:04:50

标签: javascript html5 firefox local-storage

我在Firefox中只有一个奇怪的问题。

我将项目保存到localStorage(其中一个是一个非常大的JSON对象,我用JSON.stringify进行了字符串化)。问题是,当我尝试在localStorage对象上使用removeItem()时,它会清除整个事物。所有属性都被清除。但是,如果我刷新页面,属性会回来。这适用于Safari,Chrome和Opera(最新版本),但只有Firefox有这个奇怪的问题。

我已将问题隔离到单行,我调用localStorage.removeItem(" value")。有没有人见过这样的事情?

我甚至用"存储"做了一些调试。窗口对象上的事件,只是为了看看发生了什么。我包括了下面的输出。当我尝试删除一个属性,任何属性时,所有这些都会回来。

方altKey     未定义

attrChange     未定义

attrName     未定义

气泡     假

取消     假

中ctrlKey     未定义

currentTarget当前     窗口周末度假

数据     未定义

delegateTarget     窗口周末度假

的EventPhase     2

handleObj     对象{type =" storage",origType =" storage",guid = 9}

jQuery17207456704310204192     真

metaKey     未定义

originalEvent     存储

relatedNode     未定义

relatedTarget     未定义

Shift键,     未定义

srcElement     未定义

目标     窗口周末度假

的timeStamp     1340773330422505

型     "存储"

视图     未定义

其中     未定义

isDefaultPrevented     returnFalse()

isImmediatePropagationStopped     returnFalse()

isPropagationStopped     returnFalse()

的preventDefault     函数()

stopImmediatePropagation     函数()

stopPropagation     函数()

    对象{preventDefault = function(),stopPropagation = function(),stopImmediatePropagation = function(),more ...} 存储变了 cityli ... 0771360(第55行)

方altKey     未定义

attrChange     未定义

attrName     未定义

气泡     假

取消     假

中ctrlKey     未定义

currentTarget当前     窗口周末度假

数据     未定义

delegateTarget     窗口周末度假

的EventPhase     2

handleObj     对象{type =" storage",origType =" storage",guid = 9}

jQuery17207456704310204192     真

metaKey     未定义

originalEvent     存储

relatedNode     未定义

relatedTarget     未定义

Shift键,     未定义

srcElement     未定义

目标     窗口周末度假

的timeStamp     1340773330470620

型     "存储"

视图     未定义

其中     未定义

isDefaultPrevented     returnFalse()

isImmediatePropagationStopped     returnFalse()

isPropagationStopped     returnFalse()

的preventDefault     函数()

stopImmediatePropagation     函数()

stopPropagation     函数()

    对象{preventDefault = function(),stopPropagation = function(),stopImmediatePropagation = function(),more ...} 存储变了 cityli ... 0771360(第55行)

方altKey     未定义

attrChange     未定义

attrName     未定义

气泡     假

取消     假

中ctrlKey     未定义

currentTarget当前     窗口周末度假

数据     未定义

delegateTarget     窗口周末度假

的EventPhase     2

handleObj     对象{type =" storage",origType =" storage",guid = 9}

jQuery17207456704310204192     真

metaKey     未定义

originalEvent     存储

relatedNode     未定义

relatedTarget     未定义

Shift键,     未定义

srcElement     未定义

目标     窗口周末度假

的timeStamp     1340773331099462

型     "存储"

视图     未定义

其中     未定义

isDefaultPrevented     returnFalse()

isImmediatePropagationStopped     returnFalse()

isPropagationStopped     returnFalse()

的preventDefault     函数()

stopImmediatePropagation     函数()

stopPropagation     函数()

    对象{preventDefault = function(),stopPropagation = function(),stopImmediatePropagation = function(),more ...} 存储变了 cityli ... 0771360(第55行)

方altKey     未定义

attrChange     未定义

attrName     未定义

气泡     假

取消     假

中ctrlKey     未定义

currentTarget当前     窗口周末度假

数据     未定义

delegateTarget     窗口周末度假

的EventPhase     2

handleObj     对象{type =" storage",origType =" storage",guid = 9}

jQuery17207456704310204192     真

metaKey     未定义

originalEvent     存储

relatedNode     未定义

relatedTarget     未定义

Shift键,     未定义

srcElement     未定义

目标     窗口周末度假

的timeStamp     1340773332394871

型     "存储"

视图     未定义

其中     未定义

isDefaultPrevented     returnFalse()

isImmediatePropagationStopped     returnFalse()

isPropagationStopped     returnFalse()

的preventDefault     函数()

stopImmediatePropagation     函数()

stopPropagation     函数()

    对象{preventDefault = function(),stopPropagation = function(),stopImmediatePropagation = function(),more ...} 存储变了 cityli ... 0771360(第55行)

方altKey     未定义

attrChange     未定义

attrName     未定义

气泡     假

取消     假

中ctrlKey     未定义

currentTarget当前     窗口周末度假

数据     未定义

delegateTarget     窗口周末度假

的EventPhase     2

handleObj     对象{type =" storage",origType =" storage",guid = 9}

jQuery17207456704310204192     真

metaKey     未定义

originalEvent     存储

relatedNode     未定义

relatedTarget     未定义

Shift键,     未定义

srcElement     未定义

目标     窗口周末度假

的timeStamp     1340773332395014

型     "存储"

视图     未定义

其中     未定义

isDefaultPrevented     returnFalse()

isImmediatePropagationStopped     returnFalse()

isPropagationStopped     returnFalse()

的preventDefault     函数()

stopImmediatePropagation     函数()

stopPropagation     函数()

    对象{preventDefault = function(),stopPropagation = function(),stopImmediatePropagation = function(),more ...} 存储变了 cityli ... 0771360(第55行)

方altKey     未定义

attrChange     未定义

attrName     未定义

气泡     假

取消     假

中ctrlKey     未定义

currentTarget当前     窗口周末度假

数据     未定义

delegateTarget     窗口周末度假

的EventPhase     2

handleObj     对象{type =" storage",origType =" storage",guid = 9}

jQuery17207456704310204192     真

metaKey     未定义

originalEvent     存储

relatedNode     未定义

relatedTarget     未定义

Shift键,     未定义

srcElement     未定义

目标     窗口周末度假

的timeStamp     1340773361375308

型     "存储"

视图     未定义

其中     未定义

isDefaultPrevented     returnFalse()

isImmediatePropagationStopped     returnFalse()

isPropagationStopped     returnFalse()

的preventDefault     函数()

stopImmediatePropagation     函数()

stopPropagation     函数()

    对象{preventDefault = function(),stopPropagation = function(),stopImmediatePropagation = function(),more ...} 存储变了 cityli ... 0771360(第55行)

1 个答案:

答案 0 :(得分:0)

对不起伙计们,我甚至不知道怎么解释这个,但我在这里找到答案:http://treasonx.com/blog/2012/05/08/firefox-localstorage-bug/

  

如果您执行以下操作,则会显示错误。如果您与localStorage的第一次交互是removeItem,则无法从localStorage对象获得正确的长度。似乎已经删除了localStorage中的所有项目。情况并非如此,浏览器只是没有使用localStoage的内容更新其缓存。

这是建议的解决方法,直到问题得到解决:

  

现在的解决方法是在使用localStorage进行任何其他操作之前获取localStorage对象的长度,以便它按预期工作。