|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||||||||||
|
Membre confirmé
![]() ![]() Inscription : octobre 2007 Messages : 246 ![]() |
Bonjour à tous,
Voici l'ébauche de mon véritable premier article. #################################################### Virtualisation de pages web en DOM En Javascript/AJAX, vous aurez sûrement déjà rencontré l'impossibilité pour l'utilisateur d'employer les fonctions "page précédente" et "page suivante". Bien entendu, il existe des solutions jouant sur le hash mais ce n'est pas le cadre de ce sujet. Je vais vous présenter une solution DOM, elle n'est pas correctement gérée par les navigateurs mais je la trouve plus qu'intéressante et espère que son implémentation sera corrigée par les concepteurs de navigateurs. Vous ne le saviez peut-être pas mais votre navigateur n'enregistre pas que l'url des pages que vous visitez, en effet, il enregistre aussi l'état DOM de ces pages. Pour tester le code présent dans cet article, je vous conseille d'utiliser Firefox, navigateur qui semble au plus proche d'une gestion totale. Les méthodes que nous allons utiliser à cet effet sont : document.open([MIMEtype [, historyPosition]]), elle sert à ouvrir un nouveau document dans l'onglet courant, ce qui ajoutera une nouvelle entrée à l'historique du navigateur. En théorie, il devrait être possible d'ajouter cette nouvelle entrée à une position déterminée, dans l'historique, mais nous ne l'emploierons pas, par respect de l'environnement de notre visiteur et afin de simuler la navigation classique. document.writeln(text), servant à écrire dans le document courant. document.close(), pour fermer le chargement du document. Mise en pratique Prenez une page web classique avec un bouton: Code :
Code :
Code :
Code :
Il y a bien un nouveau chargement et le bouton "page précédente" est devenu actif, cqfd! Un petit effet visuel, afin de mieux voir ce qui se passe réellement. Code :
Il semble, d'après mes tests, que window est remis à neuf au chargement du document virtuel, néanmoins, je soupçonne le navigateur de conserver des références qu'un document qui n'existe plus, nous allons donc les redéfinir : Code :
Les bémols Le navigateur semble ne conserver que le dernier état du DOM, impossible donc, actuellement, de baser la navigation d'une application web sur ce système. Quid des autres navigateurs? IE 9 : Amnésie? Il ne semble pas possible de "sauvegarder" l'arbre DOM, pour le reconstituer, après document.open(). IE se rappelle bien du type d'objet (node) mais, par exemple, pas de son tagName. Google Chrome 14 : Ne semble pas stocker l'état du DOM et pré-remplit le document avec des noeuds HTML. #################################################### Je vous invite à me faire part des vos avis, conseils/critiques et vous en remercie d'avance.
__________________
Code :
|
||||||||||||||
|
|
20
|
|
|
#2 |
|
Membre éprouvé
![]() ![]() |
Comme je viens de te le dire sur le chat, je trouve que ton article est intéressant mais qu'il manque de démo.
C'est balo de mettre des sources dedans et de ne pas montrer le résultat en live ![]() Cordialement Toine
__________________
Si ce message vous a aidé, pensez à voter pour lui! |
|
00
|
|
|
#3 |
|
Membre Expert
![]() Boris Dessysans emploi Inscription : décembre 2010 Messages : 871 ![]() |
J'avoue ne pas m'y connaitre là-dedans (document.open etc..) mais ton article a au moins le mérite d'avoir éveillé ma curiosité.
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com