2010-08-10 111 views
49

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

所以我的问题:可以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> 
+13

它可能有一些做的事实,你是从本地文件,而不是一个域这样做,因为'localStorage'依赖于域名。尝试在线托管网页。 – 2010-08-10 20:17:18

回答

55

它支持localStorage,但你需要在IE8模式(这不会在IE7模式下工作)。

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

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

<!DOCTYPE html> 

使用此文档类型不应影响您的浏览器支持。您也可以访问window.localStorage。它不应该是一个问题,但IE已经知道主办更多的问题。也许它正在寻找一个本地范围的localStorage对象?谁知道。

+6

PPK和我的研究表明localStorage在IE8的兼容性模式下工作正常。 – 2010-08-11 20:28:32

+6

当我在网络应用程序中使用它,而不是通过打开它工作的硬盘文件 – Spiderman 2010-08-25 19:36:48

6

musicfreak的评论是正确的。 因为此功能需要域名,所以我只能通过实时URL(至少是本地主机)使用它,而不是通过从磁盘打开文件。

因为IE8只识别localStorage,所以没有必要添加window.localStorage

+0

这是不正确的评论。 IE8确认window.localStorage – activars 2013-09-13 16:53:56

+3

@activars蜘蛛侠从未声称过。 – 2014-06-20 12:38:08

+0

谢谢。我尝试访问使用文件:/ /,但获得'未定义''window.localStorage'和'localStorage' – manikanta 2014-07-29 19:34:15

4

扩大前一个好答案:

我有这个同样的问题 - 更糟!即使IE10失败! - 我发现解决方案(对我而言)与我的开发环境相比,更多地与Internet Explorer相关。我所做的就是创建一个HTML文件,并使用优秀的文本编辑器进行编辑。我可以点击拖动文件到浏览器中查看我在开发页面方面的进度,然后刷新浏览器窗口,当我更新/编辑文件中的各种内容时。

事实证明,对于Chrome,Firefox和Opera,window.localStorage是一个有效的对象,但对于Internet Explorer而言,它是“未定义的”(如在调试器中所见)。但是,一旦我启动了一个Web服务器程序(用于“localhost”),并用它将HTML页面提供给浏览器,则Internet Explorer为window.localStorage提供了一个有效的对象(“DispHTMLStorage”)。另外请注意,在IE的Tools/Options/Advanced中,有一个复选框“启用DOM存储” - 默认情况下它会被选中,但有些用户总是可能会手动禁用它。

-4

本地存储的概念应该在IE8 +上工作。

所有你需要做的就是把你的源代码放在服务器上并运行它。

1

尝试使用 “IE =边缘”,而不是 “IE = 8” 在你的X-UA兼容meta标签
从微软:(link

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

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