IE8开箱即用是否支持'localStorage'

时间:2010-08-10 19:48:26

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

我正在尝试使用HTML5功能localStorage。根据{{​​3}},它可以使用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>

5 个答案:

答案 0 :(得分:56)

它确实支持localStorage,但您需要处于IE8模式(这在IE7模式下无效)。

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

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

<!DOCTYPE html>

使用此doctype不应影响您的浏览器支持。

另外,请务必访问window.localStorage。它应该不是一个问题,但已知IE可以承载更奇怪的问题。也许它正在寻找一个本地范围的localStorage对象?谁知道呢。

答案 1 :(得分:7)

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

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

答案 2 :(得分:4)

扩展前一个好的答案:

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

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

答案 3 :(得分:1)

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

  

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

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

答案 4 :(得分:-4)

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

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