"'localStorage'为null或不是对象"IE8中的错误

Tom*_*tom 1 javascript html5 internet-explorer-8 local-storage

我有这个字符串,我试图存储并获取localStorage,并从中检索,以便它可以显示.这是我的代码:

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;
}
Run Code Online (Sandbox Code Playgroud)

它适用于FF和Chrome,但当我调用'showStuff'时,IE8会返回"'localStorage'为null或不是对象".

有趣的是,当我调用'pushArray'时它不会给我一个错误,它也使用'localStorage'.

我也尝试使用"window.localStorage"而不仅仅是"localStorage",它返回了同样的错误......

根据微软和W3的说法,IE8应该支持localStorage,所以有没有人知道问题出在哪里?太感谢了!

编辑 - 是代码的jsfiddle.出于某种原因,它没有那么好用,只是为了让你感受一下代码......

dar*_*isa 6

根据我的理解,IE8仅为有效域提供存储.尝试将您的示例放在某个Web服务器中,它应该解决问题.

当我将其作为单个文件进行测试时,我遇到了同样的问题但是当我把它放在服务器(我的情况下是Tomcat)时,它工作得很好.