La prise en charge du développement d'applications Web hors ligne est un autre objectif de HTML5. Les applications Web dites hors ligne sont des applications qui peuvent toujours fonctionner même lorsque l'appareil ne peut pas accéder à Internet.
Le développement d'applications Web hors ligne nécessite plusieurs étapes. La première consiste à s’assurer que l’application sait si l’appareil a accès à Internet afin qu’elle puisse ensuite prendre les mesures appropriées. Ensuite, l’application doit également avoir accès à certaines ressources (images, Javascript, CSS, etc.) pour fonctionner correctement. Mieux encore, il doit y avoir un espace local permettant aux utilisateurs de sauvegarder leurs données, et la lecture et l'écriture ne seront pas gênées, qu'ils aient ou non accès à Internet.
HTML5 et ses API associées font du développement d'applications hors ligne une réalité.
Détection hors lignePour savoir si l'appareil est en ligne ou hors ligne, HTML5 définit un attribut navigator.onLine. Une valeur true indique que l'appareil peut accéder à Internet et une valeur false indique que l'appareil est hors ligne.
if (navigator.onLine) { // Travailler normalement} else { // Effectuer des tâches en état hors ligne}
Étant donné que navigator.onLine présente certains problèmes de compatibilité, en plus de l'attribut navigator.onLine, afin de mieux déterminer si le réseau est disponible, HTML5 définit également deux événements, en ligne et hors ligne.
Ces deux événements sont déclenchés sur l'objet window lorsque le réseau bascule entre hors ligne et en ligne :
window.addEventListener('online', function() { // Fonctionne normalement}); window.addEventListener('offline', function() { // Effectue des tâches hors ligne});
Dans les applications pratiques, il est préférable d'obtenir l'état initial via navigator.onLine après le chargement de la page. Utilisez ensuite les deux événements ci-dessus pour déterminer si l'état de la connexion réseau change. Lorsque l'événement ci-dessus est déclenché, la valeur de la propriété navigator.onLine change également, mais cette propriété doit être interrogée manuellement pour détecter les changements dans l'état du réseau.
cache d'applicationsLe cache d'application HTML5, ou appcache en abrégé, est spécialement conçu pour développer des applications Web hors ligne. Appcache est une zone de cache séparée du cache du navigateur. Pour enregistrer des données dans ce cache, utilisez un fichier manifeste qui répertorie les ressources à télécharger et à mettre en cache. Exemple de fichier de description :
MANIFESTE DE CACHE # Commentfile.jsfile.css
Puis citez en html :
<manifeste HTML=./xxx.manifest>
Le type MIME du fichier xxx.manifest doit être text/cache-manifest.
Le cœur de cette API est l'objet applicationCache. Cet objet possède un attribut d'état. La valeur de l'attribut est une constante, indiquant l'état actuel suivant du cache d'application :
Événements associés :
De manière générale, ces événements seront déclenchés dans l'ordre mentionné ci-dessus au fur et à mesure du chargement de la page. Les événements ci-dessus peuvent également être déclenchés manuellement en appelant la méthode update().
stockage de données CookiesLes cookies HTTP, généralement appelés directement cookies, sont utilisés sur le client pour stocker les informations de session. La norme exige que le serveur envoie l'en-tête HTTP Set-Cookie dans le cadre de la réponse à toute requête HTTP contenant des informations de session. Exemple d'en-tête de réponse du serveur :
HTTP/1.1 200 OK
Type de contenu : texte/html
Set-Cookie : nom=valeur
Autre-en-tête : autre-valeur d'en-tête
Le navigateur définit ensuite les informations de session, puis ajoute l'en-tête HTTP Cookie à chaque demande pour renvoyer les informations au serveur, comme indiqué ci-dessous :
OBTENIR /index.html HTTP/1.1
Cookie : nom=valeur
Autre-en-tête : autre-valeur d'en-tête
Les informations supplémentaires renvoyées au serveur peuvent être utilisées pour vérifier de manière unique de quelle requête provient le client.
Les cookies complets incluent :