Forum de discussion
Forum « Programmation Javascript » (archives)
Re: Javascript non interprété dans une DIV ??
Envoyé: 30 avril 2004, 7h46 par Oznog
1. Via innerHTML
bul a tout à fait raison. Et les "passes" sont nombreuses. Rare son ceux qui savent qu'un tableau HTML par exemple (<table>) demande à lui seul deux lectures complètes du HTML.
Bien que le Javascript soit imbriqué à un document HTML ça reste une entité complètement ignorer par le moteur HTML. C'est d'ailleurs pour ça que l'on doivent spécifier l'usage de script. Sauf à des endroit précis comme dans un comportement, par défaut seul le Javascript est interprété là (onclick, onsubmit...). De même innerHTML ne contiendra que du HTML et tout script ne pourra visiblement être interprété.
TU AS UN PROBLÈME DE STRUCTURE. Tu doit repenser ton application.
Si tu écrit document.getElementById("maDiv").innerHTML tu est donc déjà en plein processus Javascript! Alors pourquoi vouloir générer/interpréter un code alors qu'il suffit d'en exécuter un!
document.getElementById("maDiv").innerHTML = "J'éxécute mon allo"
alert('allo');
Tu va peut être me dire que le véritable but n'est pas d'afficher "allo" (Tu n'est pas très bavard à ce niveau) mais c'est tout de même ça. TOUT LE CODE QUE TU VEUX INTERPRÉTÉ DIRECTEMENT DANS LE DIV PEUT ÊTRE FAIT par la même transaction.
2. via document.write
Donc un javascript glissé dans un HTML ne fait pas grand chose. MAIS, mais mais, le Javascript interpré par lui même !
<html>
<body>
<div id="maDiv">
<script language="JavaScript" type="text/javascript">
document.write('<s' + 'cript>');
document.write("alert('allo')");
document.write('</' + 's' + 'cript>');
</script>
</div>
</body>
</html>
Je ne sais pas si ça peut t'aider, car le même principe s'applique dans ce cas. C'est à dire que les "actions", on peut faire tout simplement :
<script language="JavaScript" type="text/javascript">
alert('allo');
</script>
Mais par exemple dans le cas où l'on veut passer une valeur "dynamique" à un script "externe".
<script language="JavaScript" type="text/javascript">
maVar='allo';
document.write('<s' + 'cript src="script.asp?maVar='+maVar+'">');
document.write('</' + 's' + 'cript>');
</script>
Note que toutes les conditions seront aussi présente et donc le poid du document final toujours le même! MAIS SI TU REGARDE BIEN MON EXEMPLE, le script est un .asp C'est un langage serveur qui lui peut générer 100% du code Javascript, en autant qu'il retourne une en-tête Javascript. C'est une trasaction à un niveau supérieur alors le Navigateur ni voit que du feu.
Ciao
Oznog
Réponses
|