我正在尝试使用 HTML5 功能
localStorage
。根据this blog,它可以使用IE8完成,但是当我尝试使用它时,我收到一个javascript错误'localStorage is null or not an object'
所以我的问题是:IE8 可以开箱即用使用
localStorage
吗?这是我的代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=8" />
<title>IE8 - DOM Storage</title>
<script type="text/javascript">
function Save() {
localStorage.setItem('key','value');
}
</script>
</head>
<body>
<button onclick="Save();">
Save
</button>
</body>
</html>
它确实支持
localStorage
,尽管您需要处于 IE8 模式(这在 IE7 模式下不起作用)。
要检查您是否在 IE8 模式下工作,请加载开发人员控制台。在顶部,确保选择 IE8 模式。标准模式也不错。
您还想确保的一件事是您正在使用 HTML5 文档类型。您不应该能够使用具有 HTML5 功能的 XHTML 文档类型。
<!DOCTYPE html>
使用此文档类型不应影响您的浏览器支持。
此外,请确保您访问
window.localStorage
。这不应该是一个问题,但众所周知 IE 会出现更奇怪的问题。也许它正在寻找本地范围的 localStorage
对象?谁知道呢。
musicfreak的评论是正确的。 因为此功能需要域,所以我只能通过实时 URL(至少是 localhost)来使用它,而不是通过从磁盘将其作为文件打开。
无需添加
window.localStorage
,因为 IE8 也只识别 localStorage
。
扩展之前的好答案:
我也遇到了同样的问题——更糟糕!甚至 IE10 也失败了!--我发现解决方案(对我来说)更多地与我的开发环境有关,而不是 Internet Explorer。我所做的是创建一个 HTML 文件,并使用一个好的文本编辑器对其进行大量编辑。我可以将文件单击并拖动到浏览器中以查看开发页面的进度,然后当我更新/编辑文件中的各种内容时,只需刷新浏览器窗口即可。
事实证明,对于 Chrome、Firefox 和 Opera,window.localStorage 是一个有效的对象,但对于 Internet Explorer,它是“未定义”的(如调试器中所示)。然而,一旦我启动了一个 Web 服务器程序(对于“localhost”),并使用它将 HTML 页面提供给浏览器,Internet Explorer 就会为 window.localStorage 提供一个有效的对象(“DispHTMLStorage”)。另请注意,在 IE 的“工具/选项/高级”中,有一个“启用 DOM 存储”复选框 - 默认情况下似乎已选中该复选框,但某些用户始终可能手动禁用它。
尝试在 x-ua 兼容元标记中使用“IE=edge”而不是“IE=8”
来自微软:(链接)
使用以下值以 EdgeHTML 模式显示网页,这是 Internet Explorer 支持的最高标准模式,从 Internet Explorer 6 到 IE11。
<meta http-equiv="x-ua-compatible" content="IE=edge" >
本地存储概念应该适用于 IE8+。
您所要做的就是将源代码放在服务器上并运行它。