11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous!
Je vous soumets mon souci :
J'essaie de créer une fonction qui, quand je lui envoie le n° de mon swf à afficher, écrit le code (en javascript) pour l'afficher.
Mais je dois me planter dans les guillemets ou un autre élément de syntaxe, car le navigateur interprète le </script> contenu dans le document.write !
Voici ma fonction, pouvez-vous m'aider?
Merci beaucoup d'avance!


function ChangeSwf(number)
{
document.write ("<script type=\"text/javascript\">AC_FL_RunContent( 'codebase','http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0','width','524','height','382','src','swfcss/z_im.swf?chemin=zooms/"+number+"','quality','high','bgcolor','#000622','pluginspage','http://www.macromedia.com/go/getflashplayer','movie','swfcss/z_im.swf?chemin=zooms/"+number+"' ); </script>");
}
fika2 a écrit :
Bonjour à tous!
Je vous soumets mon souci :
J'essaie de créer une fonction qui, quand je lui envoie le n° de mon swf à afficher, écrit le code (en javascript) pour l'afficher.
Mais je dois me planter dans les guillemets ou un autre élém


Ah ?

<object> fait ça très bien tout seul. Sans couillaminis où l'on perd son temps à se vautrer quelque-part. Et en plus... robuste, disons ? Smiley cligne
Modifié par Laurent Denis (19 Feb 2007 - 14:23)
Les dernieres versions d'Internet Explorer ont restreint l'utilisation de certains "controls HTML" tels que APPLET, EMBED ou OBJECT. Pour des raisons de sécurité, ces objets ne sont plus actifs par défaut. On est obligé de cliquer une fois dessus pour avoir la main.
Cette fonction javascript permet de résoudre le probleme. Le <object> classique se trouvant dans les balises <noscript> et visible pour ceux qui n'utilisent pas JavaScript.
C'est un bug qui n'en est en fait pas tout à fait un ... c'est à cause de la façon dont les navigateurs s'y prennent pour lire du code HTML en interne... probablement avec des expressions régulières semblables à (<[a-zA-Z])(.*?)>(.*?)</$1> (je simplifie, c'est sûrement beaucoup plus compliqué que ça, c'est sûr)

Ainsi n'importe quel </script> inclus dans un script js, qu'il soit dans une chaîne ou non, est interprété... j'ai déjà pu faire plusieurs fois le test avec IE6.
La solution est toute bête, mais ingénieuse : utiliser quelque chose du genre "</scr" + "ipt>" au lieu de "</script>".

Mais je me pose également cette question de fond déjà évoquée précédemment : concrètement, à quoi ça sert ? IL y a des manières beaucoup plus propres de charger du js dans du js... en utilisant le DOM par exemple.