【问题标题】:Does IE8 out-of-the-box have support for 'localStorage'开箱即用的 IE8 是否支持“localStorage”
【发布时间】:2011-03-28 00:56:09
【问题描述】:

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

所以我的问题是:localStorage 可以被 IE8 开箱即用地使用吗?这是我的代码:

<!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 依赖于域名。尝试在线托管网页。

标签: javascript html internet-explorer internet-explorer-8


【解决方案1】:

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

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

您还需要确定的一件事是您使用的是 HTML5 文档类型。您不应该使用具有 HTML5 功能的 XHTML 文档类型。

<!DOCTYPE html>

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

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

【讨论】:

  • PPK 和我的研究表明 localStorage 在 IE8 的兼容模式下工作正常。
  • 当我在 Web 应用程序中使用它而不是通过打开硬盘文件时它起作用了
【解决方案2】:

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

无需添加 window.localStorage,因为 IE8 也只识别 localStorage

【讨论】:

  • 这不是正确的评论。 IE8 可以识别 window.localStorage
  • 谢谢。我正在尝试使用 file:// 访问,但同时获得 undefined window.localStoragelocalStorage
【解决方案3】:

扩展之前的好答案:

我也遇到了同样的问题——更糟!甚至 IE10 都失败了!——我发现(对我而言)解决方案与我的开发环境有关,而不是 Internet Explorer。我所做的是创建一个 HTML 文件,并使用一个好的文本编辑器对其进行大量编辑。我可以将文件单击并拖动到浏览器中以查看我在开发页面方面的进度,然后在我更新/编辑文件中的各种内容时简单地刷新浏览器窗口。

事实证明,对于 Chrome、Firefox 和 Opera,window.localStorage 是一个有效对象,但对于 Internet Explorer,它是“未定义的”(如调试器中所示)。但是,一旦我启动了一个 Web 服务器程序(用于“localhost”),并使用它来将 HTML 页面提供给浏览器,Internet Explorer 就会为 window.localStorage 提供一个有效的对象(“DispHTMLStorage”)。另请注意,在 IE 的工具/选项/高级中,有一个“启用 DOM 存储”复选框——默认情况下似乎已选中,但始终有可能某些用户手动禁用了它。

【讨论】:

    【解决方案4】:

    尝试在与 x-ua 兼容的元标记中使用“IE=edge”而不是“IE=8”
    来自微软:(link)

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

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

    【讨论】:

      【解决方案5】:

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

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

      【讨论】:

        猜你喜欢
        • 2011-10-12
        • 2015-07-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-04
        • 2013-02-25
        相关资源
        最近更新 更多