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à.