localStorage 在 Edge 中不起作用?
localStorage not working in Edge?
我目前正在研究一些 JS。它在除 Microsoft Edge 之外的所有浏览器中都可以正常工作。
问题很简单:
在我的一个脚本的开头,我声明了一个变量,如下所示:
var something = localStorage.getItem('something');
反正这个something现在还没有,不过大意是这个可以在后面的功能中参考。 Firefox、Chrome、Opera 和 Safari 对此没有问题,但 Edge 有,所以我的问题是,这是一个快速修复方法吗?
或者我是否因为 Edge 而不得不重写我的整个脚本?
这个是edge顺便抛出的错误
Unable to get property 'getItem' of undefined or null reference
谢谢!
你能试试吗
var something = window.localStorage.getItem('something');
您能否也检查一下您是否选择了 'Enable DOM Storage'?您可以在以下位置找到它:
Internet 选项 -> 高级选项卡 -> 安全组框
此外,如果您运行从本地文件系统访问您的页面,localStorage 不能在 IE 上运行,您必须从网络服务器运行它。
Here is a link that provides more information of how to enable it
也许 DOMStorage 已关闭?用这个测试:
if (typeof window.Storage === 'undefined') {
alert('Storage turned off...');
}
本地存储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.
中仍然不起作用
如果有人正在寻找解决方案,旧版本的浏览器也可以存储键值以在页面之间使用。
逻辑可以是
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;
}
然后设置键值使用这样的东西
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;}
您也可以删除 cookie
function eraseCookie(name) {
document.cookie = name+'=; Max-Age=-99999999;'; }
我目前正在研究一些 JS。它在除 Microsoft Edge 之外的所有浏览器中都可以正常工作。 问题很简单: 在我的一个脚本的开头,我声明了一个变量,如下所示:
var something = localStorage.getItem('something');
反正这个something现在还没有,不过大意是这个可以在后面的功能中参考。 Firefox、Chrome、Opera 和 Safari 对此没有问题,但 Edge 有,所以我的问题是,这是一个快速修复方法吗? 或者我是否因为 Edge 而不得不重写我的整个脚本?
这个是edge顺便抛出的错误
Unable to get property 'getItem' of undefined or null reference
谢谢!
你能试试吗
var something = window.localStorage.getItem('something');
您能否也检查一下您是否选择了 'Enable DOM Storage'?您可以在以下位置找到它: Internet 选项 -> 高级选项卡 -> 安全组框
此外,如果您运行从本地文件系统访问您的页面,localStorage 不能在 IE 上运行,您必须从网络服务器运行它。
Here is a link that provides more information of how to enable it
也许 DOMStorage 已关闭?用这个测试:
if (typeof window.Storage === 'undefined') {
alert('Storage turned off...');
}
本地存储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.
中仍然不起作用如果有人正在寻找解决方案,旧版本的浏览器也可以存储键值以在页面之间使用。 逻辑可以是
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;
}
然后设置键值使用这样的东西
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;}
您也可以删除 cookie
function eraseCookie(name) {
document.cookie = name+'=; Max-Age=-99999999;'; }