2010-08-02 14 views
25

Estoy usando localStorage en mi aplicación JS y me preguntaba por qué IE9 afirma localStorage == undefined. Por lo que sé, IE8 lo soporta, ¿hay alguna forma de que funcione en la nueva versión?objeto localStorage no está definido en IE

+8

¿Está probando esto en un archivo HTML local con el archivo archivo ': //' protocolo? –

+0

Mecanografiar 'localStorage' en la consola Dev Tools de Platform Preview me funciona en los sitios http –

+0

@Akexandre Jasmin oh tienes razón, me olvidé de que no funciona. Gracias. –

Respuesta

49

¿Está probando esto en un archivo HTML local? es decir, una URL file:///?

localStorage solo está disponible en los sitios web de HTTP. Eso no ha cambiado en IE9 Dev Preview.

+0

@AJ. Gracias. Sospechaba que ese era el problema, pero todavía me preguntaba qué estaba mal cuando probaba en IE. Empecé a ejecutar mi página de prueba desde una aplicación web y funcionó perfectamente en IE, FF y Chrome. – Stonetip

2

intenta abrir el archivo como el archivo

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

+0

No creo que eso funcione. No pude hacer que funcione en IE11, al menos. Ah, bueno, use el servidor web de mangosta, es lo suficientemente pequeño y luego funciona localSTorage. – raddevus

+2

@daylight Funciona si también agrega 'file: // 127.0.0.1' a la lista de sitios de confianza. – grammar31

14

IE 11 obras

Todo lo que necesita dos no añadir el archivo: //127.0.0.1 a las zonas de confianza bajo la pestaña de seguridad (NOTA: asegúrese de que la casilla de verificación https NO esté marcada) agregue esta línea al principio o su secuencia de comandos, dependiendo de su código, puede que no necesite hacerlo a menos que obtenga no conectarse 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

Genial, esto funciona! En mi máquina incluso sin cambiar nada en las pestañas de Seguridad, etc. Una nota: este código arroja un error de "Variable undefined in strict mode" si ejecuta su código en modo estricto. Para resolver, vuelva a escribir en modo no condensado ('if (! LocalStorage) {....}') – Tyblitz

+0

¡esto funciona! ¡Gran manera de engañar IE! – Nikunj