2010-08-10 15 views
49

Sto tentando di utilizzare la funzione HTML5 localStorage. Secondo this blog può essere fatto utilizzando IE8, ma quando cerco di usarlo ottengo un errore di javascript 'localStorage is null or not an object'IE8 out-of-the-box dispone del supporto per 'localStorage'

Quindi la mia domanda: può essere utilizzato da localStorage IE8 out-of-the-box? Qui è il mio codice:

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

Si potrebbe avere qualcosa a che fare con il fatto che si sta facendo da un file locale e non un dominio, in quanto 'localStorage' si basa sul nome di dominio. Prova ad ospitare la pagina web online. –

risposta

55

Lo fa supporto localStorage, anche se è necessario essere in modalità IE8 (questo non funzionerà in modalità IE7).

Per verificare che funzioni in modalità IE8, caricare la console per sviluppatori. In alto, assicurati che sia selezionata la modalità IE8. La modalità standard sarebbe anche carina.

Una cosa di cui si vuole essere certi è che si sta utilizzando il doctype HTML5. Non dovresti essere in grado di utilizzare un doctype XHTML con funzionalità HTML5.

<!DOCTYPE html> 

L'utilizzo di questo doctype non dovrebbe influire sul supporto del browser.

Inoltre, assicurarsi di accedere a window.localStorage. Non dovrebbe essere un problema, ma IE è stato conosciuto per ospitare problemi più strani. Forse sta cercando un oggetto locale localStorage con scope? Chissà.

+6

PPK e la mia ricerca indicano che localStorage funziona correttamente con la modalità di compatibilità di IE8. –

+6

quando l'ho usato all'interno dell'applicazione web e non aprendo un file del disco rigido ha funzionato – Spiderman

6

il commento di musicfreak era corretto. Poiché questa funzione richiede un dominio, ho dovuto usarlo solo tramite un URL live (almeno localhost) e non aprendolo come file da un disco.

Non è necessario aggiungere window.localStorage poiché IE8 riconosce solo localStorage.

+0

Questo non è un commento corretto. IE8 riconosce window.localStorage – activars

+3

@activars Spiderman non ha mai affermato il contrario. –

+0

Grazie. Sto cercando di accedere usando il file: //, ma ottenendo 'undefined' per sia' window.localStorage' che 'localStorage' – manikanta

4

Espansione su un precedente buona risposta:

Ho avuto questo stesso problema --worse! anche IE10 ha fallito! - e ho scoperto che la soluzione (per me) aveva più a che fare con il mio ambiente di sviluppo che con Internet Explorer. Quello che avevo fatto era creare un file HTML e modificarlo molto usando un buon editor di testo. Potevo fare clic-trascinare il file in un browser per vedere i miei progressi nello sviluppo della pagina, e più tardi semplicemente aggiornare la finestra del browser, quando ho aggiornato/modificato varie cose nel file.

Si scopre che per Chrome e Firefox e Opera, window.localStorage era un oggetto valido, ma per Internet Explorer era "non definito" (come si vede nel debugger). Tuttavia, una volta acceso un programma Web Server (per "localhost"), e usato quello per alimentare la pagina HTML al browser, Internet Explorer ha fornito un oggetto valido ("DispHTMLStorage") per window.localStorage. Si noti inoltre che in Strumenti/Opzioni/Avanzate per IE è presente una casella di controllo "Abilita archiviazione DOM". Sembra che sia selezionata per impostazione predefinita, ma è sempre possibile che alcuni utenti lo abbiano disabilitato manualmente.

-4

Il concetto di archiviazione locale dovrebbe funzionare su IE8 +.

Tutto quello che dovete fare è mettere il vostro codice sorgente sul server ed eseguirlo.

1

Provare a utilizzare "IE = edge" al posto di "IE = 8" nella vostra meta tag compatibile con x-ua
Da Microsoft: (link)

utilizzare il seguente valore per visualizzare la pagina Web in Modalità EdgeHTML, che è la modalità standard più elevata supportata da Internet Explorer, da Internet Explorer 6 a IE11.

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