2010-08-10 12 views
49

Ich versuche, die HTML5-Funktion localStorage zu verwenden. jedoch nach this blog kann IE8 erfolgen verwenden, wenn ich versuche, es zu benutzen ich einen Javascript-Fehler 'localStorage is null or not an object'Hat IE8 Out-of-the-Box Unterstützung für 'localStorage'

Also meine Frage bekommen: kann localStorage von IE8 verwendet werden, out-of-the-box? Hier ist mein Code:

<!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

Es könnte etwas mit der Tatsache zu tun, dass man es von einer lokalen Datei und kein Domain tun, da 'localStorage' auf den Namen Domäne beruht. Versuchen Sie, die Webseite online zu hosten. –

Antwort

55

es unterstützt localStorage, obwohl Sie in IE8-Modus sein müssen (dies wird nicht in IE7-Modus arbeiten).

Um zu überprüfen, ob Sie im IE8-Modus arbeiten, laden Sie die Entwicklerkonsole. Stellen Sie oben sicher, dass der IE8-Modus ausgewählt ist. Der Standardmodus wäre auch nett.

Eine Sache, die Sie auch sicherstellen möchten, ist, dass Sie den HTML5 Doctype verwenden. Sie sollten keinen XHTML-Doctype mit HTML5-Funktionen verwenden können.

<!DOCTYPE html> 

Die Verwendung dieses Doctype sollte sich nicht auf die Unterstützung Ihres Browsers auswirken.

Stellen Sie außerdem sicher, dass Sie auf window.localStorage zugreifen. Es sollte kein Problem sein, aber IE wurde bekannt, um seltsamer Probleme zu hosten. Vielleicht suchen Sie nach einem lokal begrenzten localStorage Objekt? Wer weiß.

+6

PPK und meine Forschungsergebnisse zeigen an, dass localStorage im IE8-kompatiblen Modus funktioniert. –

+6

wenn ich es innerhalb der Web-Anwendung und nicht durch Öffnen einer Harddisk-Datei verwendet, hat es funktioniert – Spiderman

6

der Kommentar von musicfreak war korrekt. Da diese Funktion eine Domäne benötigt, musste ich sie nur über eine Live-URL verwenden (zumindest localhost) und nicht, indem ich sie als Datei von einem Datenträger öffne.

Es ist nicht notwendig, window.localStorage hinzuzufügen, da IE8 auch nur localStorage erkennt.

+0

Dies ist nicht korrekt Kommentar. IE8 erkennen window.localStorage – activars

+3

@activars Spiderman nie anders behauptet. –

+0

Danke. Ich versuche mit file: // zuzugreifen, bekomme aber 'undefiniert' für' window.localStorage' und 'localStorage' – manikanta

4

Ausbau auf eine frühere gute Antwort:

Ich hatte das gleiche Problem --worse! Selbst IE10 ist fehlgeschlagen! - und ich entdeckte, dass die Lösung (für mich) mehr mit meiner Entwicklungsumgebung zu tun hatte als der Internet Explorer. Was ich getan habe, war eine HTML-Datei zu erstellen und sie mit einem guten Texteditor zu bearbeiten. Ich konnte die Datei per Klick in einen Browser ziehen, um meinen Fortschritt bei der Entwicklung der Seite zu sehen, und später einfach das Browserfenster aktualisieren, wenn ich verschiedene Dinge in der Datei aktualisierte/bearbeitete.

Es stellt sich heraus, dass window.localStorage für Chrome und Firefox und Opera ein gültiges Objekt war, aber für Internet Explorer war es "undefiniert" (wie im Debugger zu sehen). Nachdem ich jedoch ein Web-Server-Programm (für "localhost") gestartet und die HTML-Seite dem Browser zugewiesen hatte, stellte Internet Explorer ein gültiges Objekt ("DispHTMLStorage") für window.localStorage bereit. Beachten Sie außerdem, dass in Extras/Optionen/Erweitert für IE das Kontrollkästchen "DOM-Speicher aktivieren" aktiviert ist - es scheint standardmäßig aktiviert zu sein, aber es ist immer möglich, dass einige Benutzer es manuell deaktiviert haben.

-4

Lokales Speicherkonzept sollte auf IE8 + funktionieren.

Alles, was Sie tun müssen, ist Ihren Quellcode auf den Server zu legen und auszuführen.

1

Try "IE = Kante" anstelle von "IE = 8" in der x-ua-kompatible Meta-Tag
Von Microsoft verwenden: (link)

Verwenden Sie den folgenden Wert anzuzeigen die Webseite in EdgeHTML-Modus, der vom Internet Explorer unterstützte Modus mit den höchsten Standards von Internet Explorer 6 bis IE11.

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