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:

reconstruction de frames


minos

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

Lien vers le commentaire
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...

Lien vers le commentaire
Partager sur d’autres sites

  • 3 semaines après...

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 ?

Lien vers le commentaire
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

Lien vers le commentaire
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.

Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...