2010-08-02 14 views
25

Sto utilizzando localStorage nella mia applicazione JS e mi chiedevo perché IE9 affermasse localStorage == undefined. Per quanto ne so, IE8 lo supporta, è qui un modo per farlo funzionare nella nuova versione?L'oggetto localStorage non è definito in IE

+8

Stai prove su un file HTML locale con file ': //' protocollo? –

+0

Digitando 'localStorage' nella console di Dev Tools della piattaforma Preview funziona per me sui siti http –

+0

@Akexandre Jasmin oh hai ragione, ho dimenticato che non funziona. Grazie. –

risposta

49

Lo stai testando su un file HTML locale? vale a dire un URL file:///?

localStorage è disponibile solo sui siti Web HTTP. Ciò non è cambiato in IE9 Dev Preview.

+0

@ AJ. Grazie. Avevo il sospetto che questo fosse il problema, ma mi chiedevo ancora cosa c'era di sbagliato durante i test in IE. Ho iniziato a gestire la mia pagina di test da un'app Web e ha funzionato perfettamente su IE, FF e Chrome. – Stonetip

2

tenta di aprire il file in questo modo il file

: //127.0.0.1/c$/pathtofile/file.html

+0

Non penso che funzioni. Non riuscivo a farlo funzionare a IE11, almeno. Ah, bene, usa il server web di mangusta, è abbastanza piccolo e quindi funziona localSTorage. – raddevus

+2

@daylight Funziona anche aggiungendo 'file: // 127.0.0.1' all'elenco dei siti attendibili. – grammar31

14

IE 11 opere

Tutto quello che devi fare due file di aggiungere: //127.0.0.1 alle zone attendibili nella scheda sicurezza (NOTA: assicurarsi che la casella di controllo https NON sia selezionata) aggiungere questa riga all'inizio o allo script, a seconda del codice che potrebbe non essere necessario a meno che non si possa ottenere non connettersi a internet.

!localStorage && (l = location, p = l.pathname.replace(/(^..)(:)/, "$1$$"), (l.href = l.protocol + "//127.0.0.1" + p));

!localStorage && (l = location, p = l.pathname.replace(/(^..)(:)/, "$1$$"), (l.href = l.protocol + "//127.0.0.1" + p)); 
 

 
if (typeof(Storage) != "undefined") { 
 
    // Store 
 
    localStorage.setItem("lastname", "Smith"); 
 
    // Retrieve 
 
    alert(localStorage.getItem("lastname")); 
 
} else { 
 
    alert("Sorry, your browser does not support Web Storage..."); 
 
}

+0

Grande, funziona! Sulla mia macchina anche senza modificare nulla nelle schede Sicurezza ecc. Una nota: questo codice genera un errore 'Variabile indefinita in modalità rigorosa' se si esegue il codice in modalità rigorosa. Per risolvere, riscrivere in modalità non condensata ('if (! LocalStorage) {....}') – Tyblitz

+0

man funziona !, ottimo modo per ingannare IE !! – Nikunj