2010-08-10 15 views
49

Estoy tratando de usar la característica HTML5 localStorage. De acuerdo con this blog se puede hacer usando IE8, sin embargo cuando intento usarlo me sale un error de JavaScript 'localStorage is null or not an object'¿IE8 out-of-the-box tiene soporte para 'localStorage'

Así que mi pregunta: ¿puede ser utilizado por localStorage IE8 fuera de la caja? Aquí está mi código:

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

Podría tener algo que ver con el hecho de que lo está haciendo desde un archivo local y no un dominio, ya que 'localStorage' se basa en el nombre de dominio. Intente alojar la página web en línea. –

Respuesta

55

Lo hace de soporte localStorage, aunque tienes que estar en el modo IE8 (esto no funcionará en modo IE7).

Para comprobar que está trabajando en el modo IE8, cargue la consola del desarrollador. En la parte superior, asegúrese de que esté seleccionado el modo IE8. El modo estándar también sería bueno.

Una cosa de la que también querrás asegurarte es que estás utilizando el doctype HTML5. No debería poder usar un doctype XHTML con características HTML5.

<!DOCTYPE html> 

El uso de este tipo de documento no debe afectar el soporte de su navegador.

Además, asegúrese de acceder window.localStorage. No debería ser un problema, pero se sabe que IE es el anfitrión de problemas más extraños. Tal vez está buscando un objeto de ámbito local localStorage? Quién sabe.

+6

PPK y mi investigación indica que localStorage funciona bien en el modo de compatibilidad de IE8. –

+6

cuando lo usé dentro de la aplicación web y no al abrir un archivo de disco duro funcionó – Spiderman

6

el comentario de musicfreak era correcto. Como esta característica requiere dominio, tuve que usarla solo a través de una url en vivo (al menos localhost) y no abriendola como un archivo de un disco.

No hay necesidad de añadir window.localStorage como IE8 reconoce simplemente localStorage también.

+0

Este no es el comentario correcto. IE8 reconoce window.localStorage – activars

+3

@activars Spiderman nunca afirmó lo contrario. –

+0

Gracias. Intento acceder usando file: //, pero obtengo 'undefined' para' window.localStorage' y 'localStorage' – manikanta

4

Ampliando una buena respuesta anterior:

tenía este mismo problema --worse! ¡incluso IE10 falló! - y descubrí que la solución (para mí) tenía más que ver con mi entorno de desarrollo que con Internet Explorer. Lo que hice fue crear un archivo HTML y editarlo mucho usando un buen editor de texto. Podría hacer clic y arrastrar el archivo a un navegador para ver mi progreso en el desarrollo de la página, y luego simplemente actualizar la ventana del navegador, cuando actualicé/edité varias cosas en el archivo.

Resulta que para Chrome y Firefox y Opera, window.localStorage era un objeto válido, pero para Internet Explorer, era "indefinido" (como se ve en el depurador). Sin embargo, una vez que encendí un programa de servidor web (para "localhost") y lo usé para alimentar la página HTML al navegador, Internet Explorer proporcionó un objeto válido ("DispHTMLStorage") para window.localStorage. También tenga en cuenta que en Herramientas/Opciones/Avanzado para IE, hay una casilla de verificación "habilitar el almacenamiento DOM" - parece estar marcado por defecto, pero siempre es posible que algún usuario lo haya deshabilitado manualmente.

-4

El concepto de almacenamiento local debería funcionar en IE8 +.

Todo lo que tiene que hacer es colocar su código fuente en el servidor y ejecutarlo.

1

Trate de usar "IE = orilla" en lugar de "IE = 8" en su etiqueta meta compatible con X-UA
De Microsoft: (link)

Utilice el valor siguiente para mostrar la página web de Modo EdgeHTML, que es el modo de estándares más alto admitido por Internet Explorer, desde Internet Explorer 6 hasta IE11.

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