JS externe et variables

10 réponses
AuteurMessage

krucial |
Administrateur

Photo de krucial

Inscrit le : 09/03/2005

# Le 17/03/2011 à 00:58

Salut

J'ai une petite question. J'ai un fichier index.html, dans lequel j'ai un code comme celui là :

<script type="text/javascript">
var ma_variable = 1;
document.write("Ma variable : "+ma_variable+'<br />');
document.write('<script type="text/javascript" src="javascript.js"></scr'+'ipt>');
document.write("Ma variable : "+ma_variable+'<br />');
</script>


Et le fichier javascript.js est celui ci :

document.write("Passage au .js ! Ma variable : "+ma_variable+'<br />');
var ma_variable = 2;
document.write("Passage au .js ! Ma nouvelle variable : "+ma_variable+'<br />');


En gros, j'essaye de modifier la valeur de ma_variable dans le fichier JS.

Le résultat est le suivant :

Ma variable : 1
Passage au .js ! Ma variable : 1
Passage au .js ! Ma nouvelle variable : 2
Ma variable : 1


En gros, le fichier JS accede bien à la variable créée dans le fichier "index.html". Je peux modifier la valeur de ma_variable dans le fichier js, mais au retour sur index.html, la variable ma_variable reste a 1. Comment contourner ce probleme d'apres vous ? Je veux que mon fichier externe modifie la variable ma_variable.

JC - Mes sitesOuvrir dans une nouvelle fenetre | Affiliation devis travauxOuvrir dans une nouvelle fenetre | Cotes voitures anciennesOuvrir dans une nouvelle fenetre

krucial | Jean Christophe
Administrateur

Photo de krucial

Inscrit le : 09/03/2005

# Le 17/03/2011 à 00:59

Exemple là :
http://www.k-network.com/aeff/index.htmlOuvrir dans une nouvelle fenetre

JC - Mes sitesOuvrir dans une nouvelle fenetre | Affiliation devis travauxOuvrir dans une nouvelle fenetre | Cotes voitures anciennesOuvrir dans une nouvelle fenetre

PyRoFlo | Florent
Modérateur

Photo de PyRoFlo

Inscrit le : 09/05/2005

# Le 17/03/2011 à 02:52

Enlève le "var" dans ton fichier javascript.js ou même partout, "var" c'est pour définir une variable locale donc forcément en sortie ta variable n'aura pas été modifiée.

Feu d'artifice ParisOuvrir dans une nouvelle fenetre

ratfou | Raphaël
Membre

Photo de ratfou

Inscrit le : 27/09/2008

# Le 17/03/2011 à 02:59

Même sans le var ça ne fonctionne pas. Le problème vient du document.write
C'est comme s'il n'était pas pris en compte.

TooLooLooOuvrir dans une nouvelle fenetre
Deviner un mot chaque jourOuvrir dans une nouvelle fenetre
Uni-TOuvrir dans une nouvelle fenetre
DropiziOuvrir dans une nouvelle fenetre

ratfou | Raphaël
Membre

Photo de ratfou

Inscrit le : 27/09/2008

# Le 17/03/2011 à 03:02


<script type="text/javascript">
ma_variable = 1;
</script>
<script type="text/javascript">
document.write("<script type=\"text\/javascript\" src=\"javascript.js\"><\/script>");
</script>
<script type="text/javascript">
document.write("Ma variable : "+ma_variable+"<br />");
</script>


En découpant avec les balises script ça fonctionne. Etrange...
Si tu le souhaites, tu peux laisser le var.

TooLooLooOuvrir dans une nouvelle fenetre
Deviner un mot chaque jourOuvrir dans une nouvelle fenetre
Uni-TOuvrir dans une nouvelle fenetre
DropiziOuvrir dans une nouvelle fenetre

PyRoFlo | Florent
Modérateur

Photo de PyRoFlo

Inscrit le : 09/05/2005

# Le 17/03/2011 à 04:19

C'est bizarre... en théorie la variable ne doit pas être modifiée en sortie du fichier avec une redéclaration en "var" locale... J'ai pas d'explication :/

Feu d'artifice ParisOuvrir dans une nouvelle fenetre

vincir | Vincent
Membre

 

Inscrit le : 26/10/2007

# Le 17/03/2011 à 08:46

Dans le premier cas, tu initialises la variable, tu ecris une ligne qui inclus un javascript (mais qui ne l'execute pas), et tu réaffiches la variable, qui n'a pas été modifié puisque ton script n'a pas été executé. D'ailleurs si sous IE il s'execute, sous Firefox il ne s'execute même jamais lorsque tu regardes en débuggage.
Sous IE9, le résultat est d'ailleurs différents de ce que tu affiches :
Ma variable : 1
Ma variable : 1
Passage au .js ! Ma variable : 1
Passage au .js ! Ma nouvelle variable : 2

Donc le script n'est interprété par IE9 que dans un deuxième temps.

Mais sinon ne peux-tu pas faire un appel du script avant, et ensuite appeler une fonction qui se charge de faire l'affichage voulu ?

http://www.vrdeveloppement.comOuvrir dans une nouvelle fenetre : réalisation de sites web et de logiciels personnalisés.

Bool | Olivier
Modérateur

Photo de Bool

Inscrit le : 09/05/2005

# Le 17/03/2011 à 09:19

<mode vieux raleur>
document.write() est complètement daubé et plombe les perfs du JS, la meilleure chose à faire est d'essayer de s'en passer
</mode vieux raleur>

Bon pour les pubs souvent on a pas le choix, la plupart des plateformes utilisant elles aussi le code JS de 99

daevel : infogérance et conseilOuvrir dans une nouvelle fenetre || moiOuvrir dans une nouvelle fenetre

linkfr | Pierre
Membre

Photo de linkfr

Inscrit le : 09/05/2005

# Le 17/03/2011 à 09:35

merde JC le, boss de l'éditeurjavascript qui lutte sur un document.write, un mythe s'effondre !!!

Pierre ::: Teletoday.com - A la télé ce soir !Ouvrir dans une nouvelle fenetre

krucial | Jean Christophe
Administrateur

Photo de krucial

Inscrit le : 09/03/2005

# Le 17/03/2011 à 10:05

JC - Mes sitesOuvrir dans une nouvelle fenetre | Affiliation devis travauxOuvrir dans une nouvelle fenetre | Cotes voitures anciennesOuvrir dans une nouvelle fenetre

krucial | Jean Christophe
Administrateur

Photo de krucial

Inscrit le : 09/03/2005

# Le 17/03/2011 à 12:27

En fait, c'est bien pour un adserver, pouvant gerer plusieurs regies pubs. Donc, faut que ca soit old school.

La technique de ratfou fonctionne. Le JS a des lois que j'ignore

Pyroflo, une fois que ce truc fonctionne, c'est bon, je t'envoie un roman

JC - Mes sitesOuvrir dans une nouvelle fenetre | Affiliation devis travauxOuvrir dans une nouvelle fenetre | Cotes voitures anciennesOuvrir dans une nouvelle fenetre

Répondre

Vous ne pouvez pas participer au forum, car votre inscription n'a pas été validée. Pour vous faire valider en tant que Membre, cliquez ici.

© MHN - Tous droits réservés | CNIL N°844440 | 23/11/2024 21:07:06 | Généré en 7.57ms | Contacts | Mentions légales |