Passer une variable (JavaScript) entre fenêtres
Il n'existe pas en JavaScript d'objet plus haut placé
que la fenêtre. Dès qu'une fenêtre est
refermée tout ce qui appartenait à Cette fenêtre
est perdu. Comment peut-on passer une variable d'une fenêtre
à l'autre ?
Les cookies sont une réponse mais si les cookies
sont refusés par le navigateur alors il faut user
d'un autre moyen. Nous allons utiliser l'adresse comme véhicule...

Notre première page doit recueillir la variable
data et la transmettre à la suivante. Nous initialisons
la variable dans l'en-tête :
<HEAD>
<TITLE> PAGE UNE </TITLE>
<SCRIPT language="JavaScript">
data = null;
</SCRIPT>
</HEAD>
Plus bas dans notre document nous laissons à l'utilisateur
le soin de renseigner cette variable à l'aide d'un
champs de formulaire vide :
</FORM>
<INPUT type="text" value="" onChange="data=this.value">
...
On pourra choisir une autre voie mais l'important c'est
que nous allons transmettre à la page suivante le
contenu de la variable. Ici nous utilisons un bouton de
formulaire pour accéder à la page deux mais
nous aurions pu utiliser un lien. Dans tous les cas on ajoute
à l'URL de renvoi notre variable sous forme de chaîne
search c'est à dire précédée
par un point d'interrogation.
<INPUT TYPE="button" VALUE="Aller page suivante" ONCLICK="document.location='deux.html'
+ '?' + data">
</FORM>
</BODY>
Si le lien doit conduire à une ancre de la page
deux, on pourra très bien écrire aussi :
<INPUT TYPE="button" VALUE="Aller page suivante" ONCLICK="document.location='deux.html?'
+ data + '#haut' ">
Dès lors au clic sur ce bouton, si le champs a été
modifié, notre barre d'adresse affichera sa nouvelle
valeur après un point d'interrogation (voir image
plus haut).
Cette adresse est parfaitement fonctionnelle et mène
en effet à la page deux. Voyons maintenant comment
sur celle-ci nous récupérons la variable stockée
ainsi dans l'URL.
C'est dans l'en-tête de la page deux que nous plaçons
le code suivant afin d'extraire très tôt la
chaîne requise.
<HEAD>
<TITLE> PAGE DEUX </TITLE>
<SCRIPT LANGUAGE="JavaScript">
toto = location.search.substring(1, location.search.length);
if (toto=="null") toto="aucune valeur passée";
</SCRIPT>
</HEAD>
On aurait pu être tenté de se contenter d'écrire
"document.location.search" mais le navigateur
renvoie dans ce cas la chaîne search précédée
de son point d'interrogation. La méthode "substring()"
permet d'extraire les caractères depuis le second
(indexé 1) jusqu'à la fin (search.length).
La variable toto contient désormais la chaîne
de caractères passée avec l'URL. Nous pourrions
désire d'exploiter toto afin de remplir un champs
de formulaire auquel cas nous affecterions toto comme valeur
à celui-ci :
<FORM>
<INPUT TYPE="TEXT" VALUE="&{toto};"
NAME="unChamps">
</FORM>
l'expression qui nous sert à rappeler toto est ici
une entité JavaScript. On connaît surtout ces
entités HTML pour afficher les accents. JavaScript
use ici de la même syntaxe.
Si nous souhaitons insérer notre variable dans le
corps du texte, nous utiliserons dans le HTML :
voici la variable : <SCRIPT LANGUAGE="JavaScript">
document.write(toto); </SCRIPT> insérée
dans du corps du document.
Voilà.
|