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:

Messages recommandés

Posté(e)

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

Posté(e)

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...

  • 3 semaines après...
Posté(e)

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 ?

Posté(e) (modifié)

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
Posté(e)

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

Posté(e)

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é).

Posté(e)

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

Posté(e)

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.

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...