Où stocker une variable transitoire ? [Résolu]

Où stocker une variable transitoire ? [Résolu] - HTML/CSS - Programmation

Marsh Posté le 17-01-2008 à 11:08:48    

Salut,
Pour empêcher une page de s’afficher hors de son contexte, j’ai placé la routine 'if(top==self){this.location='.';}' qui provoque le retour dans le répertoire (ou ici la racine) du serveur et l’appel automatique du fichier 'index.htm'.
A l’appel de la page incriminée, je voudrais récupérer son url (ex : 'fichierHC=document.URL') et la préserver pour un traitement ultérieur (réaffichage du fichier dans sa frame spécifique).
D’où le titre du topic : Où stocker cette variable ?
 
Vous allez dire il veut 'Charger un fichier dans un jeu de cadres de façon dynamique', c’est vrai mais cette solution m’oblige à utiliser des adresses absolues et je veux maintenir ici l’usage d’adresses relatives au serveur.
Une autre piste serait d’utiliser au chargement de la page ‘index.htm’ la propriété ‘referrer’ qui contient l’url de la page appelante 'à condition que l’appel ait été fait par l'intermédiaire d'un lien' (ce qui n’est pas le cas avec {this.location='.';}).
 
Par avance, merci pour vos conseils.


Message édité par Oncle Archibald le 19-01-2008 à 01:47:33

---------------
« Quand un doigt montre le ciel, l'étourdi regarde le doigt ... »
Reply

Marsh Posté le 17-01-2008 à 11:08:48   

Reply

Marsh Posté le 17-01-2008 à 11:50:50    

Bon j'ai pas tt compris, mais pour stocker des info sur site le mieux c'est les "cookie" .

Reply

Marsh Posté le 19-01-2008 à 01:46:51    

GordonF_69 a écrit :

Bon j'ai pas tt compris, mais pour stocker des info sur site le mieux c'est les "cookie" .

Salut,
C’est pas grave j’ai dû mal m’expliquer. Merci pour ta réponse rapide mais plutôt radicale.
 
La solution consistait à utiliser la propriété 'name' de l’objet 'window' qui reste en mémoire pendant toute la "durée de vie" de la fenêtre du navigateur. Sources : Passation de valeurs JavaScript entre différents documents HTML
 
J’ai donc remplacé « if (top==self) { this.location='.'; } » par :

Code :
  1. // Replacer un fichier hors contexte dans sa frame.
  2. //  Placer cette routine dans les fichiers incriminés ou dans un script.js.
  3. if (!parent.c2)              // tester l’absence du cadre récepteur du fichier.
  4. {
  5.   self.name=location.pathname;// préserver le nom du fichier dans self-name.
  6.   this.location='.';          // supprimer le nom du fichier dans l’url > appel implicite de ‘index.htm’.
  7.   location.replace('.');     // supprimer le lien (incorrect) dans l’historique des pages visitées.
  8. }


 
Il faut ensuite insérer dans le 'frameset' du fichier index.htm l’événement 'onload' qui teste l’état (!vide) de self-name, réattribue au cadre concerné l’url du début et vide self-name.

Code :
  1. <frameset onload="javascript:{if(self.name){frames.c2.location.href=self.name;self.name='';}}" etc.>
  2. <frame class=f0 id="c0" src="banniere.htm" noresize scrolling="no" etc.>
  3. <frame class=f1 id="c1" src="titres.htm" noresize scrolling="no" etc.>
  4. <frame class=f2 id="c2" src="initial.htm" noresize scrolling="auto" etc.>


Et ça marche !  http://onclearchibald.free.fr/VOP50.htm


---------------
« Quand un doigt montre le ciel, l'étourdi regarde le doigt ... »
Reply

Sujets relatifs:

Leave a Replay

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