Ajout de la balise de script avant Déclaration Doctype

Je viens de faire un petit test et si j'ajoute un script de la manière illustrée ci-dessous, il semble qu'il fonctionne dans la plupart des principaux navigateurs modernes. Il s'exécute avant la chargement de la page, je me demandais si cela fonctionnerait dans tous les navigateurs (y compris historiques)?

<script type="text/javascript"> alert("hello world"); </script> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> </body> </html> 

Je tente évidemment de trouver un moyen d'exécuter un script pour configurer une page avant que l'une d'entre elle ne soit chargée … Toute contribution à cette fin serait grandement appréciée. Est-ce qu'il serait faux d'utiliser cette méthode?

Merci d'avance pour votre aide!

Le script s'effectue, mais le marquage (tout élément devant une chaîne DOCTYPE) permet de parcourir certains modes , ce qui signifie un grand nombre de caprices et de bizarreries mal documentés et de désordre.

Donc, quelles que soient vos raisons, vous devez au moins mettre l'élément dans le premier endroit syntaxiquement correct, à savoir juste après la <head> . Cela peut difficilement être important en comparant le point au début du document.

Que le placement résout votre problème réel soit complètement différent. Vous devriez poser une autre question, décrivant clairement le problème (plutôt qu'une solution supposée), de préférence illustré par un code qui démontre le problème.

Selon les spécifications ,

Un document conforme à la syntaxe HTML doit comporter les éléments suivants, dans l' ordre suivant :

  1. En option, un seul caractère U + FEFF BYTE ORDER MARK (BOM).
  2. Nombre de commentaires et de caractères d'espace.
  3. Un doctype .
  4. Nombre de commentaires et de caractères d'espace.
  5. Un élément html, avec ses attributs (le cas échéant) et son contenu (le cas échéant).

Les navigateurs suivent ces spécifications, et votre code (même si fonctionne maintenant) peut se briser dans le futur, car il brise clairement la règle de l'ordre des éléments.

Deuxièmement, il est presque toujours préférable de charger les scripts pour le gain de performance.

Vous mentionnez dans les commentaires que vous souhaitez cacher / afficher les éléments avant que la page ne s'affiche et que la onload soit trop lente. Essayez d'utiliser DOMContentLoaded plutôt qu'il déclenche dès que le DOM HTML est construit mais avant que toutes les images CSS et autres références externes soient chargées.

Cela a toujours fonctionné pour moi – même si j'utilise l'événement ready de jQuery pour le faire fonctionner sur le navigateur. Et il conserve votre HTML valide.