Déclencher le cache applicatif HTML 5 par javascript

Parfois je me pose des questions existentielles. Hier c’était de savoir si le cache applicatif de HTML 5 pouvait être activé dynamiquement par javascript lors de l’exécution de la page, au lieu d’être déclaré de façon statique dans le code HTML.

L’idée derrière cette interrogation est que le cache applicatif ne soit activé que sur certains critères (compatibilité du navigateur avec le code javascript utilisé, requête spécifique de l’utilisateur, etc.).

Petit test :

<!DOCTYPE html><html>
<head><meta charset=utf8><title>TEST offline</title></head>
<body><script>
document.documentElement.setAttribute("manifest", "cache.manifest") ;
window.applicationCache.update() ;
</script><body>
</html>

J’ai été agréablement surpris par Mozilla Firefox, qui accepte le tout sans broncher. La déconnexion permet de vérifier que le cache applicatif fonctionne sans heurs.

Mes espoirs se sont arrêtés là, Chrome déclenche une exception sur la mise à jour à seconde ligne de script. Il faut déclarer le cache de façon statique dans le HTML. Pas le choix, dommage.

Rejoindre la conversation

2 commentaires

  1. Un cache application est créé lors du chargement de la page. Firefox a un bug, qui est supposé renvoyé INVALID_STATE_ERR. Une des raisons est que le document chargé depuis le cache, n’aurait pas l’attribut manifest= » » et donc perdrait tout son intérêt qui est justement de faire fonctionner le cache.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

À propos de ce site, du contenu, de l'auteur
Je poste parfois ici des humeurs ou des pensées. Parfois je change, parfois je me trompe, parfois j'apprends, et souvent le contexte lui-même évolue avec le temps. Les contenus ne sont représentatifs que de l'instant où ils ont été écrits. J'efface peu les contenus de ce site, merci de prendre du recul quand les textes sont anciens. Merci

À toutes fins utiles, ce site est hébergé par OVH SAS, joignable par téléphone au +33 (0)9 72 10 10 07 et dont le siège social est au 2 rue Kellermann, 59100 Roubaix, France.