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&eacute;r&eacute;e dans du corps du document.

Voilà.