changer la source d'un javascript

changer la source d'un javascript - HTML/CSS - Programmation

Marsh Posté le 16-03-2004 à 09:10:36    

Bonjour a tous !
 
Petit souci pour un de mes scripts  
 
Soit un script de type :  
 
<script id="monscript" language="JavaScript" type="text/javascript" src="../js/monscript.php?p=1"></script>
 
L'utilisateur change des paramètres et alors je veux changer la source de ce script :
 
if (document.all) document.all("monscript" ).src="../js/monscript.php?p=2";
 
Tout cela marche presque parfaitement sauf que monscript.php s'affiche bien au chargement de la page et que lorsque je change la source il ne se passe rien...Il faudrait que je fasse un truc du genre reload sur le script (document.all("monscript" ).reload(): deja essayé mais marche pas).
 
Ma question : comment changer la source d'un javascript et qu'il se recharge sans que la page soit rechargée ?
 
Merci a tous !

Reply

Marsh Posté le 16-03-2004 à 09:10:36   

Reply

Marsh Posté le 16-03-2004 à 09:34:07    

J'ai ça mais ça ne marche que sous IE :
 
HTML :
 

Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html>
  3. <head>
  4. <title>Déplacement</title>
  5. <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
  6. <script type="text/javascript" id="monscript" src="script1.js"></script>
  7. <script type="text/javascript">
  8. <!--
  9. theScript=document.getElementById('monscript');
  10. function changeSource(val)
  11. {
  12.   switch(val)
  13.   {
  14.     case 1:
  15.       theScript.src="script1.js";
  16.       break;
  17.     case 2:
  18.       theScript.src="script2.js";
  19.       break;
  20.     default:
  21.   }
  22. }
  23. -->
  24. </script>
  25. </head>
  26. <body>
  27. <p>
  28. <a href="" onclick="plop(); return false">Test</a><br />
  29. <a href="" onclick="changeSource(1); return false">Source 1</a>
  30. <a href="" onclick="changeSource(2); return false">Source 2 </a>
  31. </p>
  32. </body>
  33. </html>


 
script 1 :
 

Code :
  1. fuction plop()
  2. {
  3.   alert('coin !');
  4. }


 
Script 2
 

Code :
  1. function plop()
  2. {
  3.   alert('pan !');
  4. }


 
Si quelqu'un a une solution crossbrower [:spamafote]
 
Mais est-ce qu'il n'y a pas moyen de concevoir tes scripts de manière à éviter le rechargement ?


Message édité par Docteur_Canard le 16-03-2004 à 09:40:22
Reply

Marsh Posté le 16-03-2004 à 09:46:58    

Salut et merci a toi,
 
Ton script est identique au mien...
 
Pour répondre à ta question, je ne peux pas changer la nature de mon script js/php, il affiche les news et je voudrais que si l'utilisateur change des parametres d'un formulaire (couleur de police, taille, etc) le script change d'aspect en temps réel . Tu vois, sinon il y a une solution tres simple, l'utilisateur valide le formulaire et on reaffiche le script avec les parametres choisis précdemment mais je trouve dommage qu'il faille recharger la page...
 

Reply

Marsh Posté le 16-03-2004 à 10:05:15    

Voila mon code a moi :  
 

Code :
  1. <select name="select_couleur" onChange="javascript:maj_news(this.options[this.selectedIndex].value)">
  2. <option value="FF0000">Rouge</option>
  3. <option value="00FF00">Vert</option>
  4. <option value="000FF">Bleu</option>
  5. </select>
  6. <script language="JavaScript" id="div_news" type="text/javascript" src="../js/news.php?code=FF0000>"></script>
  7. <script language="JavaScript">
  8. function maj_news(code){
  9. var d = document;
  10. if (d.all) d.all("div_news" ).src="../js/news.php?code="+code;
  11. if (d.getElementById) d.getElementById("div_news" ).src="../js/news.php?code="+code;
  12. }
  13. </script>


Message édité par le_zell le 16-03-2004 à 10:06:13
Reply

Marsh Posté le 16-03-2004 à 10:36:08    

le_zell a écrit :

Salut et merci a toi,
 
Ton script est identique au mien...
 
Pour répondre à ta question, je ne peux pas changer la nature de mon script js/php, il affiche les news et je voudrais que si l'utilisateur change des parametres d'un formulaire (couleur de police, taille, etc) le script change d'aspect en temps réel . Tu vois, sinon il y a une solution tres simple, l'utilisateur valide le formulaire et on reaffiche le script avec les parametres choisis précdemment mais je trouve dommage qu'il faille recharger la page...
 
 


 
Si c'est juste pour changer l'aspect du formulaire, ça peut se faire en un seul script :
 

Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html>
  3. <head>
  4. <title>Déplacement</title>
  5. <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
  6. <style type="text/css">
  7. <!--
  8. #zone
  9. {
  10.   width:100px;
  11.   height:100px;
  12.   text-align;center;
  13.   color:#000000;
  14.   background:#FFFFFF;
  15. }
  16. -->
  17. </style>
  18. <script type="text/javascript">
  19. <!--
  20. function changeCouleur(val)
  21. {
  22.   theZone=document.getElementById('zone');
  23.   switch(val)
  24.   {
  25.   case '1':
  26.     theZone.style.background='#0000FF';
  27.     theZone.style.fontSize='12pt';
  28.     theZone.style.fontFamily='serif';
  29.     break;
  30.   case '2':
  31.     theZone.style.background='#FFFFFF';
  32.     theZone.style.fontSize='16pt';
  33.     theZone.style.fontFamily='sans-serif';
  34.     break;
  35.   default:
  36.   }
  37. }
  38. -->
  39. </script>
  40. </head>
  41. <body>
  42. <p>
  43. <div id="zone">Ma Zone</div>
  44. <a href="" onclick="changeCouleur('1'); return false">Option 1</a>
  45. <a href="" onclick="changeCouleur('2'); return false">Option 2</a>
  46. </p>
  47. </body>
  48. </html>


 
(Marche sous IE et Moz)
 
A adapter avec plusieurs éléments. Tu peux également utiliser des cookies pour qu'on se souviene du choix d'une page à une autre.

Reply

Marsh Posté le 16-03-2004 à 12:28:22    

Pour forcer le rechargement du script à chaque chargement de la page, il suffit d'avoir une URL toujours différente (en rajoutant la date et l'heure par exemple. Ainsi

Code :
  1. src="../js/news.php?code=FF0000"


 
devient
 

Code :
  1. src="../js/news.php?code=FF0000&date=200403161223300"


 
Ton url étant différente à chaque chargement de la page, le JS sera automatiquement rechargé.
En revanche, il faut pouvoir insérer la date à ton URL, tu peux le faire grâce à ce genre de code:
 

Code :
  1. document.write("src=\"../js/news.php?code=FF0000&date=" + laDate + "\"" );


 

Reply

Marsh Posté le 16-03-2004 à 16:47:05    

euh non c pas pour changer l'aspect d'un element de formulaire ca je sais pas faire pas de problème ct pour changer la source d'un javascript avec des parametres selectionnés par l'utilisateyr via des menu déroulants d'un formulaire.
 
:D

Reply

Marsh Posté le 16-03-2004 à 16:49:01    

Merci pour ta réponse VinceG, mais tu mas mal compris...
 
Ce n'est pas pour forcer le rechargement du script a chaque rechargement de page ca c'est pour eviter la mise en cache et je sais faire t'inquiete pas...
 
moi je veux forcer le rechargement d'un script javascript si on lui a change sa source...son src...
 
ok ?
 

Reply

Marsh Posté le 16-03-2004 à 17:24:55    

Je viens de relire ton premier post, et en effet j'avais mal compris. Par contre je ne pense pas que ce soit faisable directement. Parce que les scripts sont chargés juste après le chargement d'une page et non lors de leur appel.
Je vois bien une solution, mais je la trouve pas très propre. Ca fait un peu bidouille et je ne sais même pas si les IFrame sont dans le W3C, et si ca marche sous Mozilla. Le truc, c'est que tu pourrais recharger une IFrame invisible qui ferait appel à ton JS. Dès que l'utilisateur change de sélection, tu recharges l'Iframe avec les bons paramètres, ce qui force le rechargement du script associé.
En espérant que mon idée (bidouille) te mettra sur la voie...
 
A+.

Reply

Marsh Posté le 17-03-2004 à 10:33:00    

Et bien VinceG c'est exactement l'option que j'ai développée et ca marche sous IE / Moz. Comme c'est un espace reservé à des admins je suppose qu'ils doivent avoir une version recente de navigateurs...

Reply

Sujets relatifs:

Leave a Replay

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