“'localStorage的为空或不是对象”在IE8错误(“'localStora

2019-09-27 08:17发布

我有这个字符串,我试图来存储并获得本地存储,并从中检索,以便它可以显示。 这里是我的代码:

var datas = new Array;
if (navigator.appName !== 'Microsoft Internet Explorer'){
    var qsVal = document.getElementsByClassName("val");
}
else{
    var qsVal = document.querySelectorAll('.val');
}
if (navigator.appName !== 'Microsoft Internet Explorer'){
    var qsKey = document.getElementsByClassName("key");
}
else{
    var qsKey = document.querySelectorAll('.key');
}
var storedPlays;
var stuff = document.getElementById("stuff");

function pushArray(){
    for (var i=0, len = qsVal.length; i < len; i++){
    thisValue = qsVal[i].value;
    thisKey = qsKey[i].value;
    datas.push([thisValue,thisKey]);
    }
localStorage.setItem('datas', JSON.stringify(datas));
}

function showStuff(){
    storedPlays = JSON.parse(localStorage.getItem('datas'));
    document.getElementById("stuff").innerHTML = storedPlays;
}

它的伟大工程与FF和Chrome,但IE8返回“‘localStorage的’为空或不是对象”时,我称之为“showStuff”。

有趣的是,当我称之为“pushArray”,它使用“localStorage的”,以及它给我一个错误。

Iv'e也尝试过使用“window.localStorage”,而不仅仅是“的localStorage”,它返回同样的错误......

IE8应该支持本地存储,根据微软和W3,所以没有任何人有任何线索,问题出在哪里? 太感谢了!

编辑 - 这是对代码的jsfiddle。 出于某种原因,这是行不通的,良好的,但只是给你的代码的感觉...

Answer 1:

按我的理解IE8给存储到只有有效域。 试着将你的例如在一些网络服务器就应该解决的问题。

我面临着同样的问题,当我测试它作为一个单独的文件,但是当我把它放在一台服务器(Tomcat的在我的情况),它只是工作得很好。



Answer 2:

检查您是否实际上是在IE 8模式 - 而不是怪癖或IE 7模式。 要做到这一点最快的方法就是打F12调出开发者工具和浏览器模式上列出该选项卡的右上角。



Answer 3:

我会给使用window.localStorage作为拍摄。 见介绍Web存储于IE浏览器



Answer 4:

你可以打开IE中的开发工具和检查的typeof JSON。 字符串化和JSON.parse的功能,也localStorage的。 我不知道本地JSON是否在IE存在。

也就是为什么你要为循环内的对象,不应该是在外面呢?

[编辑]增加这个捣鼓代码jsfiddle.net/yrhdN/2 ,一切似乎很好地工作。 我已经在IE9下IE8兼容模式测试)

[编辑]关于这个代码的一两件事,它似乎在的innerHTML showStuff()不以段落工作。 从对更改HTML以股利和使用的innerText让事情更好一点:

<div id="stuff">
</div>


function showStuff(){
    var storedPlays    = JSON.parse(localStorage.getItem('datas'));
    document.getElementById("stuff").innerText = storedPlays;
}

这似乎只能在IE中发生。 下面是一个更新的小提琴: http://jsfiddle.net/yrhdN/7/



Answer 5:

试试这个也是,如果你不希望任何本地服务器应用程序拍摄的网页。

  • 请在您的脚本代码: window['localStorage'] !== null
  • 将其更改为: window['localStorage'] != null

它的工作在我的情况。



文章来源: “'localStorage' is null or not an object” Error in IE8