Bonjour à tous..
En vue de la validation finale de mon site (optimisé aussi pour les SEO), et pour lequel je fournis une version sans javascript, il me reste quelques petits pièges à résoudre...
J'ai posté ailleurs (dans le sous-forum "validation", ici) le total de mon bilan, mais je vais vous poser ici un des points soulevés :
Ce que je veux faire : lors du chargement de la page, si javascript est activé, je veux changer la classe du body - temporairement jusqu'à la fin du chargement -, et lui ajouter 2 event handlers : onload et onunload.
Ce que j'ai fait :
Code js : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 <script type=text/javascript> document.write('</head><body id=mybod class=bod1 onload="StartInit()" onunload="CloseSess()">') </script> <noscript></head><body class=bod2 id=mybod></noscript>
Losque je passe cette page à un validateur html, si je met le </head> à l'extérieur, il me signale un script entre un head et un body... Donc j'inclus le </head> dans le script.
Mais alors le validateur me donne :
Dans l'autre post, on m'a suggeré :Error: Stray end tag head.
From line 4, column 144; to line 4, column 150
<noscript></head><body
Error: Bad start tag in body in head.
From line 4, column 151; to line 4, column 176
pt></head><body class=bod2 id=mybod></nosc
Error: Stray end tag noscript.
From line 4, column 177; to line 4, column 187
id=mybod></noscript>↩<div
Code js : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 var oBody = document.querySelector('BODY'); oBody.id = "js-actif"; oBody.className = "js-class";
Du coup, si je fais ça, et que j'y ajoute le onload et onunload, j'ai fais ceci :
Code js : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 </head><body class=bod2 id=mybod> <script type=text/javascript>var b=document.querySelector('BODY');b.onload="StartInit()";b.onunload="CloseSess()";b.className="bod1";</script>
MAIS Il change bien la classe mais n'exécute pas - ou ne termine pas - le onload.... Il reste suspendu je ne sais pas où....
Des idées ou suggestions ???
Merci d'avance
Jean
Partager