ie浏览器支持window.sessionStorage
时间: 2023-09-20 15:07:25 浏览: 95
是的,IE浏览器从IE8开始就支持window.sessionStorage对象。该对象提供了一个类似于cookie的存储机制,但是与cookie不同的是,sessionStorage中的数据仅在当前会话期间有效,关闭浏览器后数据将被删除。您可以使用以下代码在IE浏览器中使用sessionStorage:
```javascript
//存储数据
window.sessionStorage.setItem('key', 'value');
//获取数据
var value = window.sessionStorage.getItem('key');
//删除数据
window.sessionStorage.removeItem('key');
//清空所有数据
window.sessionStorage.clear();
```
相关问题
sessionStorage 兼容ie浏览器写法
在 IE8 及以下版本中,sessionStorage 是不支持的,但可以通过 userData 来模拟实现类似 sessionStorage 的功能。
下面是一个简单的兼容 IE 的 sessionStorage 实现:
```javascript
if (!window.sessionStorage) {
Object.defineProperty(window, 'sessionStorage', {
value: {
getItem: function (key) {
return document.documentElement.getAttribute('sessionStorage-' + key);
},
setItem: function (key, value) {
document.documentElement.setAttribute('sessionStorage-' + key, value);
},
removeItem: function (key) {
document.documentElement.removeAttribute('sessionStorage-' + key);
}
}
});
}
```
上述代码中,我们首先判断浏览器是否支持 sessionStorage,如果不支持,则使用 Object.defineProperty 方法将 sessionStorage 定义为一个对象,并在这个对象上定义 getItem、setItem 和 removeItem 方法,实现对应的功能。
对于 IE8 及以下版本,我们可以使用 userData 来模拟实现 sessionStorage。
```javascript
if (!window.sessionStorage) {
Object.defineProperty(window, 'sessionStorage', {
get: function () {
if (!document.documentElement.getAttribute('sessionStorage')) {
var storage = document.createElement('input');
storage.type = 'hidden';
storage.style.display = 'none';
storage.addBehavior('#default#userData');
document.body.appendChild(storage);
var expires = new Date();
expires.setDate(expires.getDate() + 365);
storage.expires = expires.toUTCString();
document.documentElement.setAttribute('sessionStorage', true);
}
return document.documentElement.getAttribute('sessionStorage');
},
value: {
getItem: function (key) {
var storage = this.storage;
return storage.getAttribute(key);
},
setItem: function (key, value) {
var storage = this.storage;
storage.setAttribute(key, value);
storage.save('sessionStorage');
},
removeItem: function (key) {
var storage = this.storage;
storage.removeAttribute(key);
storage.save('sessionStorage');
},
storage: null
}
});
}
```
上述代码中,我们使用 Object.defineProperty 方法将 sessionStorage 定义为一个对象,并在这个对象上定义 getItem、setItem 和 removeItem 方法,实现对应的功能。同时,我们还定义了一个 storage 属性,用来保存 userData 对象。
在 sessionStorage 的 getter 方法中,我们首先判断是否已经创建了 userData 对象。如果没有,我们就创建一个 input 元素,并将其添加到页面中。然后,我们给这个 input 元素设置 expires 属性,指定 userData 的过期时间。最后,我们将一个标识设置为 documentElement 的属性中,表示已经创建了 userData 对象。
在 getItem、setItem 和 removeItem 方法中,我们都使用 storage 属性来获取或设置 userData 对象中的数据。每次修改数据时,我们都需要调用 save 方法来保存数据。
ie浏览器存储sessionStorage数据后获取undefined null
可能是以下几个原因导致:
1. 存储数据时使用的键名或值为 undefined 或 null。请确认存储时键名和值都不为 undefined 或 null。
2. 存储数据时使用的键名或值为对象,而在获取时使用了字符串形式的键名。sessionStorage 只能存储字符串形式的键名和值,如果存储了对象,则需要使用 JSON.stringify() 进行转换存储,获取时需要使用 JSON.parse() 进行转换获取。
3. 存储数据时使用了跨域的 iframe 或者 window.open() 打开的页面,导致获取时不能访问到存储的数据。
请检查以上原因,确认是否解决了问题。
阅读全文