2010-01-04 5 views
9

Je construis des prototypes portables HTML/Javscript, qui sont destinés à être zippés et partagés via email/sharepoint. Le mot clé ici est «portable» - aucun serveur n'est requis pour exécuter ces prorotypes - juste un navigateur compatible avec javascript. Et il n'y a pas de base de données.Alternative aux cookies

Certains des prototypes nécessitent que je conserve des données (juste pour montrer la fonctionnalité potentielle). Je fais cela actuellement en utilisant des cookies. Cela semble fonctionner correctement pour Firefox, Chrome, etc, mais Internet Explorer semble fonctionner différemment. Une fois la taille maximale de 4096 octets pour tous les cookies d'un domaine est atteinte dans IE6 et 7 (je n'ai pas encore testé 8) les cookies cessent de fonctionner. Une fois que cette limite est atteinte, même la lecture du cookie semble s'arrêter et le prototype se casse.

Existe-t-il d'autres moyens de conserver les données sans avoir à utiliser un serveur et une base de données?

Toutes les idées seraient grandement appréciées.

Répondre

6

stocker les données dans un champ masqué (ou même plusieurs si nécessaire). Enveloppez le code que vous utilisez pour lire les cookies dans une classe/fonction dans un fichier séparé, puis vous pouvez facilement échanger les fichiers pour des instances live/exemple - potentiellement aussi facilement que commenter une ligne, et ne pas commenter l'autre.

EDIT EN RAISON DE LA DEMANDE EN COMMENTAIRE: Cela fonctionne sur plusieurs pages, à condition que vous appuyez sur les données dans les champs cachés à travers les pages multiples. Si vous ne souhaitez pas effectuer de POSTES d'une page à l'autre, vous pouvez placer la ou les pages dans un cadre, puis placer les champs masqués dans un élément de cadre qui n'est pas affiché (dans ce scénario, les champs n'ont techniquement pas besoin d'être cachés). De quoi s'agit-il? La page à laquelle vous accédez a une balise FRAME qui pointe vers deux pages différentes. La première page est votre application elle-même, et cela prend tout l'immobilier visible. La deuxième page est juste une page qui contiendra un ou plusieurs contrôles qui retiendront les données, et cette deuxième page n'est pas visible (pour l'utilisateur) du tout. Comme ces pages font toutes partie du même "domaine", il est facile pour l'enfant du cadre de parler à l'un de ses frères et soeurs et de lire/écrire des données dans les champs de la page cachée. la limite des cookies est qu'un champ de saisie de texte est techniquement limité uniquement par la mémoire de l'ordinateur et le délai d'expiration du débit du réseau.Par exemple, j'ai vu un champ caché avec 20MB de données avant (pensez le plus mauvais de mal viewstates).

+0

Bonjour Stephen. Merci pour la réponse. Je me bats pour avoir la tête autour de ça. Pouvez-vous développer un peu? Cela fonctionnera-t-il sur plusieurs pages, et comment cela contournera-t-il le problème des limites de cookies? – Sniffer

+0

J'aime ça! Merci de clarifier. Je n'utilise normalement pas de cadres, mais dans ce cas, il est logique (jusqu'à ce que HTML 5 obtienne un public plus large). C'est seulement pour le prototypage après tout. Merci encore. – Sniffer

5

Bien qu'il ne soit pas disponible pour l'instant, il existe HTML5 webstorage/localstorage.

+0

Malheureusement, la solution doit être disponible pour tous les navigateurs grand public. Je ne peux pas forcer les clients à utiliser un spécifique ou à mettre à niveau vers un navigateur récent. – Sniffer

+0

@Sniffer: Je comprends votre position. À votre santé. – jldupont

5

Regarde YUI Storage.

+0

Intéressant. Je vais examiner cela, bien que j'utilise généralement la bibliothèque jQuery, donc je préférerais utiliser une version de jQuery (s'il y en a une). – Sniffer

+0

On dirait qu'il existe des options jQuery. Je ne sais pas à quel point ils sont mûrs. http://stackoverflow.com/questions/791412/offline-data-storage-access-using-jquery – Chris

3

Dojo Storage vous permettra d'économiser jusqu'à 100k

+0

Intéressant. Je vais examiner cela, bien que j'utilise généralement la bibliothèque jQuery, donc je préférerais utiliser une version de jQuery (s'il y en a une). – Sniffer

+0

S'il n'y a pas de version de jQuery, vous devriez pouvoir utiliser seulement un sous-ensemble de Dojo pour obtenir la fonctionnalité de stockage. Vous devriez être capable de continuer à utiliser jQuery pour la plupart de votre programmation. Caveat emptor: Je n'ai jamais personnellement mélangé jQuery et Dojo dans la même application. –

0

La situation concernant les API de stockage HTML5 a progressé depuis que cela a été demandé et initialement répondu par jldupont here.

Actuellement Opera Mini est le seul navigateur majeur sans support.

Source, accédé le 22 août 2013.