我目前正在研究一些JS。它在除Microsoft Edge之外的每个浏览器中都能正常工作。 问题很简单: 在我的一个脚本的开头,我声明了一个像这样的变量:
var something = localStorage.getItem('something');
无论如何,这个东西还不存在,但整个想法是这可以在以后的函数中用作参考。 Firefox,Chrome,Opera和Safari没有这个问题,但Edge确实存在问题,所以我的问题是,这是一个快速解决方案吗? 或者我是否因为Edge而不得不重写我的整个脚本?
这是边缘抛出的错误。
Unable to get property 'getItem' of undefined or null reference
谢谢!
答案 0 :(得分:18)
本地存储didn't work for local files in IE9,所以我想在MS Edge中仍然如此。
我刚刚使用localhost
上的服务器在Edge中对其进行了测试,您的代码行工作正常:
> var something = localStorage.getItem('something');
> undefined
在早期版本的IE中,这可能是一个安全问题,并且在开发浏览器时从未更新过。
虽然看来localStorage和sessionStorage仍然无法在Edge for HTML files accessed using the 'file://' protocol.
中工作答案 1 :(得分:4)
请你试试
var something = window.localStorage.getItem('something');
您是否还可以检查是否选择了“启用DOM存储”?你可以在下面找到它: 互联网选项 - >高级标签 - >安全组框
此外,如果您从本地文件系统运行页面,localStorage不能在IE上运行,则必须从Web服务器运行它。
Here is a link that provides more information of how to enable it
答案 2 :(得分:0)
如果有人正在寻找解决方案来存储在页面之间使用的键值。 逻辑可能是
attach(DATA)
m <- summary(meta.summaries(RR,SE), conf.level = 0.95)
然后使用类似这样的设置键值
function detectIE() {
var ua = window.navigator.userAgent;
var msie = ua.indexOf('MSIE ');
if (msie > 0) {
// IE 10 or older => return version number
return false;
}
var trident = ua.indexOf('Trident/');
if (trident > 0) {
// IE 11 => return version number
return false;
}
var edge = ua.indexOf('Edge/');
if (edge > 0) {
// Edge (IE 12+) => return version number
return false;
}
// other browser
return true;
}
您还可以删除Cookie
`if (detectIE()) { window.localStorage.setItem('key1', value1);window.localStorage.setItem('key2', value2);}else{ setCookie('key1','value1',1);var value1 = getCookie('key1');}
function setCookie(name,value,days) {
var expires = "";
if (days) {
var date = new Date();
date.setTime(date.getTime() + (days*24*60*60*1000));
expires = "; expires=" + date.toUTCString();
}
document.cookie = name + "=" + (value || "") + expires + "; path=/";}
function getCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;}
答案 3 :(得分:-2)
也许DOMStorage已关闭?用此测试:
if (typeof window.Storage === 'undefined') {
alert('Storage turned off...');
}