localStorage无法在Edge中工作?

时间:2015-09-03 11:52:49

标签: javascript local-storage microsoft-edge

我目前正在研究一些JS。它在除Microsoft Edge之外的每个浏览器中都能正常工作。 问题很简单: 在我的一个脚本的开头,我声明了一个像这样的变量:

var something = localStorage.getItem('something'); 

无论如何,这个东西还不存在,但整个想法是这可以在以后的函数中用作参考。 Firefox,Chrome,Opera和Safari没有这个问题,但Edge确实存在问题,所以我的问题是,这是一个快速解决方案吗? 或者我是否因为Edge而不得不重写我的整个脚本?

这是边缘抛出的错误。

 Unable to get property 'getItem' of undefined or null reference

谢谢!

4 个答案:

答案 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...');
}