11548 sujets

JavaScript, DOM et API Web HTML5

Salut à tous !

J'ai un petit soucis de Javascript...

Je propose un script qui diffuse les articles de mon site. Je permets aux webmasters de personnaliser le script à travers un formulaire.

Dans la version actuelle il faut valider le formulaire pour avoir un aperçu, là je souhaiterai que le script soit actualisé dès qu'on rempli une case, en gros au chargement de la page il y ai :

<script src="http://www.fanaticf1.com/spip/distrib.php3?titre=tout&bgcolor=FFFFFF&bordercolor=000000&titre_color=FF0000&texte_color=0000FF" type="text/javascript" ></script>


et qu'après qu'on ai changé une valeur, le code change pour

<script src="http://www.fanaticf1.com/spip/distrib.php3?titre=tout&bgcolor=FFFF00&bordercolor=000000&titre_color=FF0000&texte_color=0000FF" type="text/javascript" ></script>


J'arrive à mettre à jour le code (avec la bonne url), mais quand je fais :

document.getElementById("test").innerHTML = "<script src=\"http://www.fanaticf1.com/spip/distrib.php3?titre=tout&bgcolor=FFFF00&bordercolor=000000&titre_color=FF0000&texte_color=0000FF\" type=\"text/javascript\" ></script"+">";


Rien ne s'affiche, alors que si je fais :
document.getElementById("test").innerHTML = "http://www.fanaticf1.com/spip/distrib.php3?titre=tout&bgcolor=FFFF00&bordercolor=000000&titre_color=FF0000&texte_color=0000FF";


ça fonctionne...

Avez vous quelque chose à me proposer ?

Merci d'avance !
Modifié par Fanatic F1 (27 Oct 2006 - 23:04)
Euuh.... Merci de ta réponse mais je vois pas le rapport...

Moi je veux changer un script dynamiquement, sans recharger la page...
Fanatic F1 a écrit :
Moi je veux changer un script dynamiquement, sans recharger la page...
La solution de QuentinC ne recharge pas la page.

De toute façon, à ma connaissance, il n'est pas possible de "changer un script dynamiquement" (le code a déjà été interprété par le navigateur, tu ne peux plus revenir en arrière). Tout ce que tu peux faire est ajouter un script.
a écrit :

La solution de QuentinC ne recharge pas la page.

Tout à fait.

a écrit :

De toute façon, à ma connaissance, il n'est pas possible de "changer un script dynamiquement" (le code a déjà été interprété par le navigateur, tu ne peux
plus revenir en arrière). Tout ce que tu peux faire est ajouter un script.

Exactement. Je rajouterais que si tu charges deux fois le même script, mais que le code des fonctions ont changé entre temps, les fonctions peuvent être écrasées.

Une précision qu'il est toujours utile d'apporter : Modifier la'ttribut src d'un élément script existant directement ou par le DOM ne fonctionne pas toujours (notamment avec IE... étonnant n'est-ce pas ?). Mieux vaut, comme dans mon exemple, recréer un nouvel élément script.
Le seul truc que mon exemple ne fait pas, j'en suis conscient que ça pourrait être utile dans ce cas, c'est épurer les éléments script au fur et à mesure de la création de nouveaux, pour ne pas surcharger l'arbre DOM du document. Ce n'est par ailleurs pas une modification très difficile à apporter.

JE vais ajouter encore une précision à propos des éléments script et le DOM qu'il est toujours bon de rappeler : Effacer via le DOM un élément script (removeChild) n'effacera en aucun cas les fonctions et variables crées par le script concerné. L'élément script disparaît de l'arbre DOM du document, c'est tout.
Modérateur
bonsoir , et comment ? nous somme curieux ...

Perso , je suis "bricoleur" , et je teste mes (petits et tres simpliste) javascript en live , a partir d'un textarea et a l'appuie du clavier .

Le script est envoye en variable avec le html , dans une popup ou une page html se reconstruit , la sa marche evidement bien avec IE, j'avais auparavant tester a partir d'une frame a une autre , puis vers un iframe , puis vers un div , ce n'est qu'au moment ou j'ai tester la popup , que IE a accepté enfin le js.

il suffit de rafraichir la popup pour tout reinitialisé les modif sont prise en compte , mais les variables sont perdues .

++
En fait j'ai pas rafraichi le script Smiley lol

Mon script affichait un tableau, j'ai donc refait un tableau et avec l'événement onChange j'ai mis des trucs du genre : document.getElementById('titre').style.color = '#'+this.value;

Le résultat est celui attendu mais c'est pas en faisant comme je le pensais