SELFHTML

Martin Wernecke
Charger un fichier dans un jeu de cadres de façon dynamique

Page d'information: vue d'ensemble

vers le bas Martin Wernecke
vers le bas Le problème
vers le bas Solution première partie: Contenu de la page de cadre
vers le bas Solution deuxième partie: Contenu de la page du jeu de cadres

vers le bas 

Martin Wernecke

E-Mail: Adresse électronique martin@morshausen.de
Homepage-URL: Page en langue allemande http://www.morshausen.de

Il s'agit ici d'un article traduit de l'allemand par la rédaction de SELFHTML actuel. Veuillez poser vos questions relatives à cet article uniquement à son auteur, prenant compte que celui-ci ne maîtrise peut-être pas la langue française!

vers le hautvers le bas 

Le problème

Une carence lors de l'emploi de jeux de cadres réside dans la difficulté pour d'autres sites de poser des liens directs aux pages de cadres. Ce problème est traité dans SELFHTML au chapitre Page d'information: connexion exigée Possibilités d'application judicieuse pour les cadres.
Un exemple: à l'adresse page en langue française http://www.mairie-lille.fr/ on peut consulter la page d'accueil de la belle ville de Lille dans le Nord. Elle est constituée d'un jeu de cadres. Ainsi les visiteurs peuvent-ils grâce à une barre de menus appeler par exemple une page d'informations sur la célèbre braderie qui est affichée dans le cadre principal. Si l'on référence cette page directement, en entrant par exemple page en langue française http://www.mairie-lille.fr/braderie/index.htm dans la ligne d'adresse du navigateur, la page d'informations sur la braderie de Lille sera affichée sans les cadres qui l'entourent. Ceci n'est pas seulement fâcheux pour l'esthétique - le lecteur qui tombe sur cette page grâce à un moteur de recherche ne dispose pas de la possibilité d'accéder, grâce au cadre de navigation, aux autres offres de la page d'accueil.

vers le hautvers le bas 

Solution première partie: Contenu de la page de cadre

Il est possible de pallier cet effet indésirable grâce à quelques lignes de JavaScript. À cet effet, il faut dans un premier temps intégrer un script dans chaque page de cadres; ce script vérifie après le chargement de la page, si un jeu de cadres existe. Si ce n'est pas le cas, le jeu de cadres est alors chargé. Il est communiqué simultanément au jeu de cadres, la page à partir de laquelle le chargement est intervenu.

Exemple:

<head>
...
<script type="text/javascript">
<!--
 function verificationFrameset() {
  if(!parent.cadre_navigation_xyz)
   location.href="http://www.xy.fr/sous_repertoireXY/index.htm?" + location.pathname;
 }
//-->
</script>
</head>
<body onLoad='verificationFrameset()'>
...

Explication:

Avec if(!parent.cadre_navigation_xyz) il est vérifié si un cadre de navigation nommé 'cadre_navigation_xyz' existe. Placez ici à la place de cadre_navigation_xyz le nom d'un cadre choisi pour l'identification du jeu de cadres. S'il n'existe pas, c'est sur la page de cadre que l'on est aiguillé. Grâce à location.href la nouvelle URL est fixée. Mentionnez comme cible l'URL de la page qui contient le jeu de cadres, suivie d'un point d'interrogation. Le chemin de la page actuelle suit ce dernier grâce à location.pathname. Cela permet ensuite d'afficher la page actuelle dans le jeu de cadres.

vers le hautvers le bas 

Solution deuxième partie: Contenu de la page du jeu de cadres

La page avec la définition du jeu de cadres contient de son côté une fonction qui est lancée après le chargement. Celle-ci vérifie si le lien par lequel le jeu de cadres a été adressé contient une chaîne de caractères à la suite d'un point d'interrogation. Si c'est le cas, cette chaîne de caractères est alors extraite (il s'agit du chemin de la page de cadre qui appelle) et la page de cadre est chargée dans le cadre correspondant.

Exemple:

<head>
...
<script type="text/javascript">
<!--
 function verif_appel_cadre() {
  var adresse_ajoutee=location.search;
  if(adresse_ajoutee)
  frames.cadre_principal_xyz.location.href=adresse_ajoutee.substring(1,adresse_ajoutee.length);
 }
//-->
</script>
</head>

<frameset cols="60,*" onLoad="verif_appel_cadre()">
  <frame name="cadre_navigation_xyz" src="links.htm">
  <frame name="cadre_principal_xyz" src="start.htm">
</frameset>

...

Explication:

L'objet location contient dans sa propriété location.search une chaîne de caractères placée éventuellement à la suite d'un point d'interrogation à la fin de la ligne d'adresse. Si cette chaîne n'est pas vide et qu'elle contient donc le chemin de la page de cadre qui appelle, celle-ci est chargée avec frames.cadre_principal_xyz.location.href=adresse_ajoutee.substring(1,adresse_ajoutee.length) dans le cadre nommé 'cadre_principal_xyz'. L'application de la fonction substr() à la fin de la ligne élimine le point d'interrogation du début de la chaîne.


 
vers le haut

© 2001-2005 Page d'information: connexion exigée Informations