2010-01-04 27 views
9

Construyo prototipos portátiles de HTML/Javscript, que están destinados a ser comprimidos y compartidos por correo electrónico/sharepoint. La palabra clave aquí es "portátil", no se requiere ningún servidor para ejecutar estos prorotipos, solo un navegador habilitado para JavaScript. Y no hay base de datosAlternativa a las cookies

Algunos de los prototipos requieren que conserve los datos (solo para mostrar posibles funcionalidades). Lo hago actualmente mediante el uso de cookies. Esto parece funcionar bien para Firefox, Chrome, etc., pero parece que Internet Explorer funciona de manera diferente.

Una vez que se alcanza el tamaño máximo de 4096 bytes para todas las cookies de un dominio en IE6 y 7 (todavía no he probado 8), las cookies dejan de funcionar. Una vez que se alcanza este límite, incluso la lectura de la cookie parece dejar de suceder y el prototipo se rompe.

¿Hay alguna otra manera en que pueda persistir la información sin tener que usar un servidor y una base de datos?

Cualquier idea sería muy apreciada.

Respuesta

6

almacenar los datos en un campo oculto (o incluso varios si es necesario).

Envuelva el código que utiliza para leer las cookies en una clase/función en un archivo separado, y luego puede intercambiar fácilmente los archivos para instancias en vivo/de muestra, lo cual es tan fácil como comentar una línea, y sin comentar el otro.

edición debido a SOLICITUD EN COMENTARIO: Esto funcionará a través de múltiples páginas, con la condición de insertar los datos en los campos ocultos a través de las múltiples páginas. Si no desea hacer POSTS de una página a la siguiente, puede envolver la (s) página (s) en un marco y luego tener los Campos Ocultos ubicados en un elemento de marco que no se muestra (en este escenario, el los campos técnicamente no necesitan ser ocultos).

Qué es esto, la página a la que se accede tiene una etiqueta FRAME, que apunta a dos páginas diferentes. La primera página es su propia aplicación, y eso ocupa todos los bienes inmuebles visibles. La segunda página es solo una página que contendrá uno o más controles que retendrán los datos, y esta segunda página no estará visible (para el usuario). Dado que estas páginas forman parte del mismo "dominio", es fácil para el niño de cuadro hablar con uno de sus hermanos y leer/escribir datos en los campos de la página oculta.

Y la forma en que esto se soluciona el límite de cookies es que un campo de entrada de texto está técnicamente limitado solo por la memoria en la computadora y el tiempo de espera del rendimiento de la red. Por ejemplo, he visto un campo oculto con 20MB de datos antes (piense lo peor de viewstates malignos).

+0

Hola Stephen. Gracias por la respuesta. Estoy luchando para entender esto. ¿Puedes ampliar esto un poco? ¿Funcionará esto en varias páginas, y cómo se soluciona esto el problema del límite de cookies? – Sniffer

+0

¡Me gusta! Gracias por aclararlo. Normalmente no uso marcos, pero en este caso tiene sentido (hasta que HTML 5 tenga un público más amplio). Es solo para prototipos después de todo. Gracias de nuevo. – Sniffer

5

Aunque no está ampliamente disponible en este momento, existe HTML5 webstorage/localstorage.

+0

Lamentablemente, la solución debe estar disponible para todos los navegadores mainstream. No puedo obligar a los clientes a usar un específico o actualizar a un navegador más reciente. – Sniffer

+0

@Sniffer: Entiendo su posición. Aclamaciones. – jldupont

5

Mira lo YUI Storage.

+0

Interesante. Analizaré esto, aunque generalmente uso la biblioteca de jQuery, por lo que preferiría usar una versión de jQuery (si es que hay una). – Sniffer

+0

Parece que hay algunas opciones de jQuery. No estoy seguro de lo maduros que son. http://stackoverflow.com/questions/791412/offline-data-storage-access-using-jquery – Chris

3

Dojo Storage le permitirá ahorrar hasta 100k

+0

Interesante. Analizaré esto, aunque generalmente uso la biblioteca de jQuery, por lo que preferiría usar una versión de jQuery (si es que hay una). – Sniffer

+0

Si no hay una versión de jQuery, debería poder usar solo un subconjunto de Dojo para obtener la funcionalidad de almacenamiento. Debería poder continuar usando jQuery durante la mayor parte de su programación. Caveat emptor: Nunca he mezclado jQuery y Dojo personalmente en la misma aplicación. –

0

La situación con respecto a la API de almacenamiento de HTML5 ha progresado desde que se solicitó y fue respondida inicialmente por jldupont here.

Actualmente, Opera Mini es el único navegador importante que no admite esta función.

Source, acceso el 22/8/2013.