2010-08-10 61 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" > 
相關問題