IE8 开箱即用是否支持“localStorage”

IT技术 javascript html internet-explorer internet-explorer-8
2021-02-09 21:08:19

我正在尝试使用 HTML5 功能localStorage根据这个博客,它可以使用 IE8 来完成,但是当我尝试使用它时,我收到了一个 javascript 错误'localStorage is null or not an object'

所以我的问题是:localStorageIE8可以开箱即用吗?这是我的代码:

<!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>
5个回答

它确实支持localStorage,但您需要处于 IE8 模式(这在 IE7 模式下不起作用)。

要检查您是否在 IE8 模式下工作,请加载开发者控制台。在顶部,确保选择了 IE8 模式。标准模式也不错。

您还想确保的一件事是您正在使用 HTML5 文档类型。您不应该能够使用具有 HTML5 功能的 XHTML 文档类型。

<!DOCTYPE html>

使用此文档类型不应影响您的浏览器支持。

此外,请确保您访问window.localStorage. 这应该不是问题,但众所周知 IE 会托管更奇怪的问题。也许它正在寻找一个本地范围的localStorage对象?谁知道。

当我在 Web 应用程序中使用它而不是通过打开它工作的硬盘文件时
2021-04-07 21:08:19
PPK 和我的研究表明 localStorage 在 IE8 的兼容模式下工作正常。
2021-04-12 21:08:19

Musicfreak 的评论是正确的。因为此功能需要域,所以我只能通过实时 url(至少是 localhost)使用它,而不是将其作为磁盘文件打开。

不需要添加,window.localStorage因为 IE8 也可以识别localStorage

这不是正确的评论。IE8 识别 window.localStorage
2021-03-19 21:08:19
谢谢。我米使用文件试图访问://,但得到undefined两个window.localStoragelocalStorage
2021-04-11 21:08:19

扩展以前的好答案:

我有同样的问题——更糟!甚至 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”
来自 Microsoft:(链接

使用以下值以EdgeHTML 模式显示网页,EdgeHTML 模式是Internet Explorer 支持的最高标准模式,从Internet Explorer 6 到IE11。

<meta http-equiv="x-ua-compatible" content="IE=edge" >

本地存储概念应该适用于 IE8+。

您所要做的就是将源代码放在服务器上并运行它。