2009-11-26 19 views
5

Je dois être en mesure d'exécuter des formulaires HTML hors ligne. Je veux dire qu'ils doivent travailler sans connexion directe au serveur Web.Formulaires HTML en mode hors connexion

Dans une application que j'ai écrite il y a plus de 5 ans, je l'ai fait en implémentant un gestionnaire de protocole personnalisé - lorsqu'un formulaire initié par l'utilisateur soumet la requête HTTP résultante a été enregistrée localement. Plus tard, lorsqu'une connexion au serveur devient disponible, un programme de synchronisation parcourt les demandes collectées et les soumet au serveur pour collecter les réponses et les enregistre de nouveau localement pour une utilisation ultérieure.

C'était alors. Maintenant, un autre client m'a approché avec une demande très similaire. Quelle technologie pensez-vous que je devrais utiliser aujourd'hui?

La prise en charge de HTML5 est très limitée pour le moment. Google engrenages? Ou devrais-je revenir en arrière et continuer à utiliser le gestionnaire de protocole et le synchroniseur personnalisé?

+0

Une question à clarifier: Est-ce que c'est pour une application d'utilisateur de masse ou interne seulement? Savez-vous quelles sont les exigences du navigateur pour vos utilisateurs? Si c'est interne et que vous avez un certain contrôle, vous pourriez même envisager de faire une simple application AIR. Adobe AIR utilise Google Gears pour le stockage hors ligne, et les prochaines versions d'AIR en feront encore plus. – Joshua

+0

C'est une application interne. Les personnes ayant des ordinateurs portables fournis par l'entreprise se connectent à l'application pour recevoir des formulaires à remplir et sortir sur le terrain pour collecter des informations en remplissant les formulaires – mfeingold

Répondre

4

Je dirais d'aller pour HTML5. Tous les navigateurs ne le supportent pas; mais tout le monde le fera. En attendant, je pense qu'il est préférable de dire "pour obtenir des fonctionnalités hors ligne essayez tel ou tel navigateur", au lieu de "s'il vous plaît télécharger ce plugin énorme avec beaucoup d'avertissements effrayants".

Aussi une simple démographie: HTML5 est dans quoi, 5% de tous les navigateurs? dix%? encore beaucoup plus que le 0% des utilisateurs avec Gears déjà installé.

C'est vraiment dommage, merci beaucoup à Google de faire avancer les choses avec Gears; mais dans la nature, le seul plugin généralement accepté est Flash. Heureusement, HTML5 est presque déjà là, avec presque les mêmes caractéristiques.

+0

+1 pour proposer une bonne solution à long terme – tosh

2

Google Gears est un très bon candidat - à titre d'exemple, Google a récemment annoncé que les utilisateurs seraient en mesure d'attacher des fichiers à des e-mails lorsqu'ils sont «hors ligne». Une autre méthode peut consister à stocker les données de formulaire publiées dans un cookie, et lorsque l'utilisateur est en mesure de se remettre en ligne, le serveur récupère le cookie et les données avec lui.

+0

Un cookie ne le coupe pas. Les formulaires peuvent avoir une quantité assez importante de données, des dizaines de champs. Je ne voudrais pas utiliser de cookies pour cela – mfeingold

+0

Je comprends. Cependant, gardez à l'esprit que les cookies peuvent stocker littéralement des mégaoctets de données, selon le navigateur. Même des dizaines de champs ne devraient pas être un problème. Seul le problème concerne les données de fichier réelles (c'est-à-dire le téléchargement PDF). – Joshua

1

Dojo.Storage/ Dojo Offline, dispose d'un pont flash qui vous permettra de stocker des données en utilisant le stockage de données de flash. La limite est définie par l'utilisateur, mais commence à 5 Mo. Le composant de bibliothèque est une abstraction et prend également en charge HTML 5, les cookies et les engrenages.

Les engrenages plus vous permettront de stocker des blobs binaires, si la mémoire est bonne.

2

Les rumeurs courent que Google Gears n'est plus en développement. Quand vous regardez les caractéristiques des engrenages et le suivi des problèmes au http://code.google.com/p/gears/issues/list?can=2&q=&sort=version&colspec=Version%20Milestone%20Owner%20ID%20Summary%20Component pour le nouveau développement de Gears, il n'y a que 3 éléments qui seront corrigés dans la version 0.6. En outre, selon cet article Wikipedia (http://en.wikipedia.org/wiki/Google_Gears), il semble que Google ne fait aucun développement, et le projet open source n'a pas beaucoup de vapeur non plus. "A la fin du mois de novembre 2009, de nombreuses sources d'information en ligne ont rapporté que Google allait migrer pour utiliser HTML 5 plutôt que Gears dans le futur. Un porte-parole de Google a précisé plus tard que Google continuerait cependant à soutenir Gears pour ne pas casser les sites qui l'utilisent. "

En d'autres termes, Gears a été déprécié. Utilisez HTML 5 à la place.

1

Google Gears est mort: http://gearsblog.blogspot.com/2011/03/stopping-gears.html

Votre meilleur pari est probablement une combinaison des normes HTML5 pour applicationCache et localStorage. Cependant, applicationCache devrait être utilisé avec parcimonie - c'est une vraie douleur.Cet article explique pourquoi, ainsi que de donner quelques indications sur la façon d'utiliser une approche hybride de applicationCache et localStorage pour une consultation hors ligne (pas de soumission) de pages:

http://www.alistapart.com/articles/application-cache-is-a-douchebag/

Voici un article qui a un exemple de la saisie des données de formulaire dans localStorage, mais malheureusement, il ne fournit pas un exemple de soumettre réellement les données en ligne:

http://miniapps.co.uk/blog/post/using-html5-localstorage-as-a-fallback-for-offline-form-submission

aussi, méfiez-vous de window.navigator.onLine pour détecter l'état hors ligne - il n'est pas appliquée de manière cohérente à travers le frère wsers, et vous feriez probablement mieux d'avoir l'utilisateur explicitement vous dire si elles sont hors ligne ou non.

- Tchad

Questions connexes