2009-09-29 11 views
28

Así que estoy jugando con HTML 5 y localStorage y estoy notando que mis valores solo se almacenan cuando ejecuto la página en Firefox en el host local (es decir, http://127.0.0.1:8000/test/index.html), pero cuando ejecuto el archivo localmente (archivo : /// C: /test/index.html) mis valores no se almacenan. Safari 4 no tiene problemas con ambas configuraciones. Así que ¿alguien sabe si esto es así por diseño -.>DOM Storage on the Mozilla Developer Center¿Funciona "localStorage" en Firefox solo cuando la página está en línea?

(Firefox 2 permite el acceso al almacenamiento objetos más altos en la jerarquía de dominios que el documento actual esto no es ya permitido en Firefox 3, por razones de seguridad. Además, esta propuesta además de HTML 5 ha sido eliminado de la especificación HTML 5 a favor de localStorage, que es implementado en Firefox 3.5.)

O si hay una solución?
Me pregunto porque el almacenamiento fuera de línea que funciona sólo en línea suena tonto: P

Si alguien se pregunta, el código es tan fácil como se pone:

function save() 
{ 
localStorage.setItem('foo','bar'); 
} 

function load() 
{ 
var test = localStorage.getItem('foo'); 
alert(test); 
} 
+2

Hola, les escribo desde el año 2011. ¡Todavía no está arreglado! https://bugzilla.mozilla.org/show%5Fbug.cgi?id = 507361 –

+0

... pero parece funcionar bien sin conexión con cromo – lapinferoce

+1

Gracias a Dios encontré esto ... He estado tratando de depurar en Firefox y me preguntaba dónde me equivoqué porque no pude ver nada mal con mi código . Funcionó en IE y Chrome mientras trabajaba con file: // URL pero Firefox no funcionaba. Tan pronto como lo puse en un servidor, funcionó bien. –

Respuesta

22

Parece un error: Bug 507361 - localStorage doesn't work in file:/// documents
Espero que se solucione pronto!

2011-09-13: Error solucionado, implementado en 'Mozilla8'. Probé esto con Firefox 8 y funciona ahora.

+3

Mientras tanto puedes usar Chrome para probar tus scripts sin conexión, ya que no tiene este error. – lapo

+0

No puedo verificar esto ahora, pero creo que esta es la respuesta final. – hobotron

21

Bueno, el documento vinculado sí dice que

localStorage es lo mismo que globalStorage [location.hostname], con la excepción de con un origen HTML5 (esquema + nombre de host + puerto no estándar)

No quiero decir que entiendo al 100% lo que eso significa, pero el bit entre corchetes sugeriría que la URL necesita tener ciertas propiedades, en particular que el esquema y el nombre de host son lo que Firefox considera un HTML 5 origen. Sospecho que las URL file:/// no coinciden con esto, mientras que su http://127.0.0.1/ sí lo hace.

edit: Mirando el description of the Origin property del W3C, el paso 7 parece que podría estar causando el problema. Dependiendo de cómo se implemente el manejo de localStorage, puede estar esperando un 3-tuple como se devuelve en el paso 12, pero para un URL file://, el valor de retorno puede ser casi cualquier cosa.

Entonces, er, supongo que es por diseño. En la reflexión, lo más probable es que esto no sea realmente por diseño; no hay ninguna razón por la cual localStorageno debería funcionar para file:// URLs. Podría ser solo un caso de la salida de una implementación específica del navegador que no coincida con las expectativas de otro.

En cuanto a las soluciones, ¿globalStorage no haría lo que usted quisiera aquí?

Cuestiones relacionadas