Aide pour le javascript - Bruno GADRAT
avec javascript et html4 strict
Un site en évolution et des journées trop courtes
Le site web existe depuis longtemps. Il y a de très nombreuses pages. En 2007 j'ai décidé de passer aux feuilles de style pour comprendre ce que sera notre quotidien. Un changement complet pour tout rendre homogène est inpossible. En 2008 j'ai intégré un changeur d'aspect : le styleswitcher de Paul Sowden pour explorer ce monde nouveau.
Le choix du javascript a la place du php est lié à la volonté de garder le site efficace sur mon ordinateur et d'éviter d'avoir un niveau de complexité supplémentaire.
Le script de Paul Sowden est simple à installer et à comprendre. On déclare les liens vers les feuilles de style dans des balises link du head du html et on appelle le programme javascript. Si on veut un menu pour changer de style, on ajoute quelques lignes dans le body du html.
C'est parfait quand on a quatre ou cinq feuilles de style écrites dès le début. mai si on écrit des nouvelles feuilles de style au fur et à mesure. On doit reprendre le contenu des fichiers html pour déclare les nouvelles feuilles de style. C'est parfait jusqu'à une dizaine de feuilles de style et pour un site sans trop de répertoires et sous-répertoires. Mais si on oublie une déclaration de style dans une page et que la page précédente y avait fait appel alors la page n'a plus de style du tout.
Au-dela de la beauté sobre et dépouillement du contenu, on avait pas installé un changeur de style pour ne plus en avoir.
J'ai donc cherché un changeur d'aspect (styleswitcher qui me permette de ne pas tout déclarer à chaque fois. J'ai trouvé le simplissime Style Switcher de Dem Pilafian parfait pour faire plusieurs aspects sur quelques pages dans un même répertoire.
J'ai donc décidé de l'améliorer un peu pour permettre une utilisation avec des répertoires et sous-répertoires et en plaçant le script dans un fichier au lieu de l'avoir sur la page. Je me suis également arrangé pour que les cookies soient lisible par le script de paul Sowden. Avec encore un peu d'effort j'ai ajouté la possibilité d'avoir une feuille de style même si on a coupé le javascript ou les cookies.
Il restait encore et toujours un problème. Quand la feuille de style n'existe plus, le cookie donne un lien qui est mort et la page n'a pas de style.
Bon c'est mal parti
Le lien link qui déclare quel fichier css utiliser pour afficher la page comporte l'url et l'id si on en a mis un. Ce sont les seuls repère accessible par le javascript. Ce lien ne nous dit pas si le fichier existe ou pas. L'accès au contenu de la balise link nous dit qu'il n'y a pas de contenu. On ne peut donc pas savoir si le fichier css a été chagé correctement ou pas.
Même problème avec la balise object
On n'a donc pas accès au fichier qui est chargé par la balise object.
La seule bonne nouvelle, c'est que la balise object peut remplacer la balise iframe dans un fichier en html4 strict. Elle permet en effet d'afficher du contenu texte html ou autre provenant d'un autre fichier dans un cadre à l'intérieur du document.
Un espoir déçu
Il faut trouver une balise qui peut charger un fichier et nous donner accès à son contenu. La méthode .innerHTML semblait intéressante... La création d'une nouvelle fenêtre ne permet pas plus d'accéder à son contenu directement après l,ordre d'ouverture de la fenêtre window.open(). Un petit espoir subsistait avec la vérification de la date de modification du fichier, mais il faut que la vérification se fasse un fois la fenêtre chargée au complet la fonction onLoad() attend le bon vouloir du serveur. Ça peut être long. De plus la méthode est inopérante si le visiteur a configuré pas de fenêtre popup.
Garder un oeil sur le Doctype
Le html4 strict est présvu pour faire de la structuration de contenu. Ni plus ni moins. Il était tentant d'explorer la fonction XMLHttpRequest() qui est le rêve du développeur en lui permettant de communiquer avec le serveur. le problème c'est que c'est du xml pas du html. Le navigateur change alors sa façon d'interpréter la page. Au mieux le doc type html4 interdit de faire l'action au pire, et c'est souvent le cas, le fichier est interprété comme du xml et ne s'affiche plus correctement. Pourquoi pas du PHP ... voir le contexte. Le besoin de transporter le site sur une clef usb interdit toute action serveur.
Pour comprendre l'évolution des paysages, il faut explorer le réel et l'imaginaire
Bruno Gadrat Design Végétal: Maîtrise d'œuvre des jardins et des paysages
Bruno Gadrat
Orig: 2008/09 Rev: 2008/09/09
fichier-existe.html
Design et gestion du site B.Gadrat