【发布时间】:2013-11-23 14:38:03
【问题描述】:
我有这个字符串,我正在尝试存储并获取到 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;
}
它适用于 FF 和 Chrome,但 IE8 在我调用“showStuff”时返回“'localStorage' 为 null 或不是对象”。
有趣的是,当我调用“pushArray”时它不会给我一个错误,它也使用了“localStorage”。
我也试过使用“window.localStorage”而不是“localStorage”,它返回了同样的错误......
根据微软和 W3 的说法,IE8 应该支持 localStorage,所以有人知道问题出在哪里吗? 谢谢一百万!
EDIT - This 是代码的 jsfiddle。出于某种原因,它并没有那么好,只是为了让您感受一下代码......
【问题讨论】:
-
CanIUse.com 也认为 IE8 应该支持它。 caniuse.com/#search=local
-
我已经添加了这个 jsfiddle:jsfiddle.net/yrhdN/2(只是改变了一些小细节以使您的代码工作)并且一切似乎都工作正常。我在IE8兼容模式下测试过IE9)
-
在你的应用程序中加载 DOM 之前,它会不会像 document.querySelectorAll 一样触发?
标签: javascript html internet-explorer-8 local-storage