Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

minos

reconstruction de frames

Messages recommandés

salut à tous,

j'ai un petit souci en développement html + javascript

sur un site que je dois modifier qui contient des frames on peut appeler les pages contenus => ça pose un pb si l'utilisateur arrive dans un cadre sans les menus...

comment faire pour que si on appelle un des cadres il reconstruise le conteneur?

 

je connais la technique pour charger la page de démarrage quand un des cadres est chargé :

 

<script language="JavaScript">

if(parent.frames.length == 0) parent.location.href = "../index.htm";

</script>

 

mais est-ce qu'il existe un moyen pour reconstruire la page telle qu'elle devrait être SANS revenir à la page d'accueil?

 

Merci!

:P

Partager ce message


Lien à poster
Partager sur d’autres sites

Si c'est HTML pur (i.e. pas de cgi, pas de php, rien...) ca peut se faire mais c'est lourdingue...

 

Explication : http://java.sun.com/j2se/1.4.2/docs/api/ja...ang/Double.html

Typiquement la page qui est "sortie" de son frameset (cliquer sur "FRAMES" en haut de la page pour revenir en mode "frames"). Là si on clique sur "frames" on perd la page sur laquelle on était pour revenir au "menu"...

 

Pour toi, on va faire un effort...

Dans chacune de tes pages, tu uilises une "redirection" (le code que tu as fourni) en précisant depuis quelle page tu fais cet appel. Supposons qu'on tente de charger directement rubrique1.html. On tombe sur

<script language="JavaScript">
if(parent.frames.length == 0) parent.location.href = "../index.htm?referer=rubrique1.html";
</script>

Ce code va ouvrir la page d'accueil de ton site dans le navigateur.

La page d'accueil contient le frameset "normal" c'est à dire, directement sur le menu.

A partir de là, si j'ai bien compris, tu veux revenir sur la page qui est à l'origine de la redirection, mais à l'intérieur de ta frame :

var queryString = location.search.substring(1);
var nv = queryString.split('&');
var eq = nv[0].indexOf('=');
if(nv[0].substring(0,eq).toLowerCase() == "referer") {
 leNomDeTonFramePrincipal.location = unescape(nv[0].substring(eq + 1));
}

 

Et voilà le travail !

Ton frame "tonFramePrincipal" va charger l'URL qu'on lui a passée en paramètre.

Je sais, c'est crade comme façon de faire, mais quand on n'a pas de serveur d'application qui tourne derrière on se débrouille comme on peut...

Partager ce message


Lien à poster
Partager sur d’autres sites

J'ai voulu utiliser cette astuce, mais quelque chose doit m'échapper. J'utilise donc une page divisée en 4 frames (entête, marge de gauche, page centrale, marge de droite)

 

voici le code de TestIndex.htm :

<html>
<head>
<title>ACCUEIL</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

</head>
<frameset rows="65,*" frameborder="NO" border="0" framespacing="0" cols="*" bordercolor="#000000"> 
 <frame name="topFrame" scrolling="NO" noresize src="TestEntete.htm" >
 <frameset cols="220,*" frameborder="NO" border="0" framespacing="0" rows="*"> 
   <frame name="leftFrame" scrolling="NO" noresize src="TestMarge.htm">
   <frameset cols="480,220" frameborder="NO" border="0" framespacing="0" rows="*"> 
     <frame name="mainFrame" src="TestDefaut.htm">
     <frame name="rightFrame" scrolling="NO" noresize src="TestLinks.htm">
   </frameset>
var queryString = location.search.subString(1);
var nv = queryString.split('&');
var eq = nv[0].indexOf('=');
if(nv[0].substring(0,eq).toLowerCase()=="referer") {
mainFrame.location = unescape(nv[0].subString(eq + 1));
}
 </frameset>
</frameset>

<noframes> 
<body>
Il va vous falloir un navigateur qui accepte les frames...
</body>
</noframes> 
</html>

 

et dans les pages devant s'afficher dans la frame mainFrame j'ai le code suivant :

<html>

<head>
<title>Toto dans la mainFrame, normalement</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

<script language="JavaScript">
if(parent.frames.length == 0) parent.location.href = "TestIndex.htm?referer=TestToto.htm";
</script>
</head>


<body>

<h3><font face="Arial, Helvetica, sans-serif">A mettre dans la mainFrame</font></h3>
<p>
Ceci est la page de Toto
</p>
</body>

</html>

 

 

la redirection fonctionne et le passage de la variable indiquant de quel page on vient également (puisque l'adresse est modifiée : ajout de '?refer= etc...') mais on aboutit toujours sur la page par défaut (TestDefaut.htm) et non celle d'où on vient (TestToto.htm).

 

Quelq'un voit où est mon erreur ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Astucieux ton code KewlCat!

 

Sleabo, le code qu'il t'a fournit c'est du javascript ... donc forcément il faut l'inclure entre des balises <script language="javascript"></script> que tu placeras dans le head de ta page :P

Modifié par le Visiteur

Partager ce message


Lien à poster
Partager sur d’autres sites

hum, j'ai pas mis le bon truc dans mon message. en fait de dépit, j'ai essayé de l'inserer un peu partout, ce code. Ce qui me semble le plus logique c'est ça, dans la page index (TestIndex.htm)

<head>
<title>ACCUEIL</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript">
var queryString = location.search.subString(1);
var nv = queryString.split('&');
var eq = nv[0].indexOf('=');
if(nv[0].subString(0,eq).toLowerCase()=="referer") {mainFrame.location = unescape(nv[0].subString(eq + 1));}
</script>
</head>

 

Mais ça ne marche pas non plus. En fait tout se passe comme si je n'avais rien écrit. :P

Partager ce message


Lien à poster
Partager sur d’autres sites

Oui c'est bien ce qu'il faut faire là.

Vérifie que ta frame principale s'appelle bien "mainframe" comme écrit dans le code (sinon corrige) et que dans l'url tu mets bien "?referer=page_ou_aller.htm" au lieu de "refer" (j'avais pas vu que tu t'étais trompé).

Partager ce message


Lien à poster
Partager sur d’autres sites

Bon je vais un peu me relire à l'avenir.

 

 

Le script de la page TestToto.htm appelle bien la page TestIndex.htm?referer=TestToto.htm

 

La frame destination s'appelle mainFrame...

 

Je me demande ce qui cloche :P

Partager ce message


Lien à poster
Partager sur d’autres sites

Copie ceci dans le head du frameset:

<script language="JavaScript">
function verif(){
var queryString = location.search.substring(1);
var nv = queryString.split('&');
var eq = nv[0].indexOf('=');
if(nv[0].substring(0,eq).toLowerCase() == "referer") {
window.nom_de_ta_frame.location = unescape(nv[0].substring(eq + 1));
}
}
</script>

 

puis dans ta balise frameset tu mets ça:

onLoad="verif()"

 

Testé et fonctionnel.

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant

  • En ligne récemment   0 membre est en ligne

    Aucun utilisateur enregistré regarde cette page.

×