En fait, c'est pas le fait que tu écrives le flash dans le header qui pose problème, mais ton script
En fait, on va reprendre doucement le système du JavaScript.
Le javascript dans une page HTML est réparti en 3 endroits :
- Dans le HEAD dans une balise <script>
- Dans le BODY dans une balise <script>
- Dans la déclaration d'un attribut "eventHandler" d'une balise (onclick par exemple)
Pour les deux premiers cas, on peut avoir un include à la place du script. Ceci ne change rigoureusement au fonctionnement décrit ci-après.
Lorsque la page se charge, les scripts sont éxécutés dans l'ordre :
- Les balises <script> qui sont dans le body
- Les évènements "onload" décrits dans les attributs de <body> ou de <img> par exemple, au fur et à mesure que ces derniers se chargent.
- Au fur et à mesure que l'utilisateur déclenche des évènements.
On notera que je n'ai pas parlé des scripts qui sont dans la balide head, puisqu'il ne sont jamais éxécutés automatiquement.
En fait, le JS est réparti dans la page comme dans un programme proprement écrit (pas en C donc, mais par exemple en Pascal ou en Ada). Le body correspond au main du programme. C'est ce qui s'éxécute au démarrage de la page. Même plus éxactement, ça s'éxécute au fur et à mesure que la page se charge. Ne jamais faire appel dans un script éxécuté de cette façon à des élements qui sont plus bas que le script dans le flux HTML, ils ne seront pas encore chargés au moment où le script va s'éxécuter !
Le head quand à lui correspond à la section header dans un langage structuré. Bon, dans ce cas c'est pas vraiment vrai, c'est plutôt une sorte d'include qui n'est accessible que par appel à des fonctions (le code ne sera pas éxécuté). Quand aux eventHandler définis dans les tag, ça correspond tout bêtement à des events handlers définis dans des objets avec n'importe quel langage.
Tout ça pour dire que si ton truc marche pas, c'est parceque tu fais un document.write dans le head, et qu'il ne sera pas éxécuté. Si tu le met dans une fonction, et que <body onload="function()"> à ce moment il s'éxécutera, ou si simplement tu met ton bloc de script dans le body