SELFHTML/Quickbar  JavaScript  Exemples d'application


Changer simultanément deux frames

Cette page est un document avec du texte et des informations

 Changer simultanément deux frames - l'exemple

 

Netscape2.0MS IE 3.0 Changer simultanément deux frames - l'exemple

exemple Exemple d'affichage: aperçu

Celui qui a déjà conçu un projet HTML avec plusieurs  Frames, réalise combien il peut être souhaitable quelquefois lors de l'exécution d'un lien, de modifier non seulement le contenu d'une fenêtre frame, mais celui de deux ou de plusieurs frames simultanément. Maintenant, on peut dans de tels cas mettre un lien à un fichier, qui définit lui un nouveau jeu de frames correspondant. Mais si vous avez beaucoup de liens de ce genre, ce procédé deviendra vite lourd. Comme alternative à cette solution, vous pouvez vous faire assister d'un JavaScript.

Attention: Pour une meilleure orientation dans l'exemple, celui-ci contient des liens aux explications respectives par exemple: 1*. Ces liens ne font pas partie du code source. Si vous copiez cet exemple dans un éditeur, vous devez effacer ces liens, faute de quoi vous recevriez des messages d'erreur JavaScript.

Exemple partie 1 - fichier cadre.htm:

  <html>
  <head>
  <title>Test de frames</title>
  </head>
  1* <frameset cols="30%,*">
   <frame src="liens.htm">
   <frameset rows="25%,*">
     <frame src=bienvenue1.htm">
     <frame src="bienvenue2.htm">
   </frameset>
  </frameset>
  </html>

Exemple partie 2 - fichier liens.htm:

  <html>
  <head>
  <title>Liens</title>
  <script language="JavaScript">
  <!--
   2* function deuxFrames(URL1,F1,URL2,F2)
   {
    parent.frames[F1].location.href=URL1;
    parent.frames[F2].location.href=URL2;
   }
  //-->
  </script>
  </head>
  <body text=#000000 link=#0000CC vlink=#000099 alink=#0000FF>
  <h1>Liens</h1>
  3* <a href="javascript:deuxFrames('susan1.htm',1,'susan2.htm',2)">Susan Sarandon</a>
  <br>
  <a href="javascript:deuxFrames('jack1.htm',1,'jack2.htm',2)">Jack Nicholson</a>
  </body>
  </html>

Explication:

 définir un jeu de frames
Dans l'exemple est établi un fichier cadre.htm qui prépare un jeu de frames pour une base de données d'acteurs. Le jeu de frames a la configuration suivante:

À gauche, il y a une colonne avec des liens aux différents acteurs. Les liens se trouvent dans le fichier liens.htm. À droite se trouvent deux frames. Celle du haut, plus petite, est censée contenir une photo de l'acteur désiré et les faits marquants de sa vie. Celle du bas, plus grande, doit proposer des informations exhaustives, par exemple une description de sa vie et des informations concernant les films auxquels il a participé. À l'appel du jeu de frames est affiché à gauche le fichier liens.htm. À droite sont affichés des fichiers de bienvenue du projet, nommés bienvenue1.htm et bienvenue2.htm.


 définir une fonction JavaScript pour changer deux frames
Dans le projet, les liens qui lorsqu'on les clique doivent modifier le contenu des deux frames de droite sont notés dans le fichier liens.htm. C'est pourquoi le code JavaScript nécessaire est également noté dans ce fichier. Dans l'entête du fichier, donc entre <head> et </head>, est défini un  passage JavaScript avec le repère HTML prévu à cet effet <script language="JavaScript">...</script>. À l'intérieur de ce passage, une  fonction nommée deuxFrames() est définie. Cette fonction attend quatre paramètres:
1. l'adresse URL du contenu désiré pour la première fenêtre frame (URL1)
2. l'index de la fenêtre frame désirée dans le jeu de frames (F1)
3. l'adresse URL du contenu désiré pour la deuxième fenêtre (URL2)
4. l'index de la fenêtre frame désirée dans le jeu de frames (F2)
Cette fonction a été définie généralement, vous pouvez donc vous en servir à cette fin dans des jeux de frames tout à fait différents.
Dans la fonction, il y a deux instructions. Dans la première instruction, l'adresse URL souhaitée est affectée à la première fenêtre frame souhaitée, dans la deuxième instruction, la deuxième adresse URL souhaitée est affectée à la deuxième fenêtre frame souhaitée. Par parent il est possible, à l'intérieur d'un jeu de frames, d'adresser le jeu de fenêtres frames complet. Avec parent.frames[n], des fenêtres frames déterminées distinctes peuvent être adressées dans le jeu de frames. L'index commence à 0 pour le comptage, c'est à dire que la première fenêtre définie dans le jeu de frames sera adressée avec parent.frames[0], la deuxième avec parent.frames[1] etc. La fonction deuxFrames reçoit comme paramètres transmis les index de fenêtres. C'est pour cette raison que par exemple on trouve dans la première instruction parent.frames[F1]. Par location.href, une adresse URL peut être adressée, par exemple quelconque fichier HTML dans le même projet. Avec l'expression complète parent.frames[F1].location.href=URL1;, une adresse URL quelconque est affectée à une fenêtre frame d'un jeu de frames. Étant donné que deux frames doivent être changées simultanément, il y a deux instructions de ce type.

 noter un lien pour changer deux frames
Le fichier liens.htm de l'exemple contient des liens à des informations sur Susan Sarandon et Jack Nicholson. Pour que, lorsque l'on clique sur un de ces liens, les deux autres fenêtres frames soient modifiées simultanément, on n'indique pas avec la mention href= une adresse URL comme d'habitude, mais le mot clé javascript, suivi de deux points et de l'appel de la fonction définie dans l'entête de fichier: deuxFrames(). C'est à cette occasion que les quatre paramètres attendus sont transmis.
Pratiquez de la même façon pour les autres liens.

après: Empêcher l'aperçu de vos pages dans des frames
avant: Fonctions indépendantes de l'objet
 

SELFHTML/Quickbar  JavaScript  Exemples d'application

© 1998 Stefan Münz / © 2001 Traduction  Serge François, 13405@free.fr