Question bizarre avec document.write...

Question bizarre avec document.write... - HTML/CSS - Programmation

Marsh Posté le 18-08-2003 à 15:59:36    

Je suis en train de me poser certaines questions concernant la possibilite de mettre du flash dans une page.
Je veux en restant dans la meme page (sans redirection pourrie donc) faire apparaitre une animation a partir d'un document.write.
 
Pourquoi ?
 
C'est simple : Pour tester si flash est bien installe, je dois utiliser du JS. Et si le JS est absent, il est evident que je ne peux plus tester la presence de flash, et je souhaite donc dans ce cas faire apparaitre autre chose en lieu et place de l'anime.
 
Seulement voila :
 

Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <html>
  3. <head>
  4.  <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
  5.  <title>test</title>
  6.  <script type="text/javascript"><!--
  7. <!--Début
  8. document.write("<object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0\" width=\"88\" height=\"32\"><param name=movie value=\"http://ipfixe.com/fr/support/boutonfr_2.swf\"><param name=quality value=high><embed src=\"http://ipfixe.com/fr/support/boutonfr_2.swf\" quality=high pluginspage=\"http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash\" type=\"application/x-shockwave-flash\" width=\"88\" height=\"32\"></embed></object>" );
  9. //Fin -->
  10. // -->
  11. </script>
  12. <NOSCRIPT>
  13. ATTENTION ! votre navigateur ne supporte pas JavaScript ....
  14. </NOSCRIPT>
  15. </head>
  16. <body>
  17. </body>
  18. </html>


 
ne fonctionne pas... pourquoi ??
 
Pourtant :
 

Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <html>
  3. <head>
  4.  <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
  5.  <title>test</title>
  6. </head>
  7. <body>
  8. <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0" width="88" height="32"><param name=movie value="http://ipfixe.com/fr/support/boutonfr_2.swf"><param name=quality value=high><embed src="http://ipfixe.com/fr/support/boutonfr_2.swf" quality=high pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="88" height="32"></embed></object>
  9. </body>
  10. </html>


 
fonctionne parfaitement...  :??:  
 
Kekicepasse ?  :heink:  
 
PS : ne faites pas attention a l'anime, j'ai pris la premiere venue dans google  [:totozzz]

Reply

Marsh Posté le 18-08-2003 à 15:59:36   

Reply

Marsh Posté le 18-08-2003 à 16:11:09    

parce que ca n'a pas de sens d'ecrire une anim flash dans un header ....
 
fait un autre test ...
tu fais ta fonction dans le header et tu lui fais appel depuis le body pour savoir si oui ou non tu dois afficher l'anim... ca marche  :D  
 
si ca merde tu me le dis .. j'avais ca pour un site... je le recherche  ;)


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 18-08-2003 à 16:15:03    

simogeo a écrit :

parce que ca n'a pas de sens d'ecrire une anim flash dans un header ....
 
fait un autre test ...
tu fais ta fonction dans le header et tu lui fais appel depuis le body pour savoir si oui ou non tu dois afficher l'anim... ca marche  :D  
 
si ca merde tu me le dis .. j'avais ca pour un site... je le recherche  ;)  


 
Exact, j'aurais du y penser  :jap:  :jap:  
 
ca marche. Il est donc possible d'inserer des animes flash uniquement chez ceux qui ont JS et flash installe sans passer par une redirection de merde. Bon a savoir...
 
Oula, faut que j'arrete de me poser des questions moi... [:totozzz]  
 
edit : Et merci bcp au fait ;)


Message édité par Hermes le Messager le 18-08-2003 à 16:17:03
Reply

Marsh Posté le 18-08-2003 à 19:15:04    

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 :)

Reply

Marsh Posté le 18-08-2003 à 19:17:50    

Hermes le Messager a écrit :


 
Exact, j'aurais du y penser  :jap:  :jap:  
 
ca marche. Il est donc possible d'inserer des animes flash uniquement chez ceux qui ont JS et flash installe sans passer par une redirection de merde. Bon a savoir...
 
Oula, faut que j'arrete de me poser des questions moi... [:totozzz]  
 
edit : Et merci bcp au fait ;)
 


 
Sinon, une autre solution à ton problème :)
 
Tu fais une page "Test de votre navigateur en cours..."
 
Dedans, un meta refresh d'une seconde vers la page avec le flash.
Et un script qui fait immédiatement un redirect sur cette même page, en ajoutant en querystring le résultat de la détection du flash.
 
A ce moment, si l'utilisateur n'a pas de JS, tu le sais, et tu peux choisir ce que tu veux faire et s'il a JS, tu sais s'il a flash ou non.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed