Lien entre Frame et Iframe

[Résolu]
Signaler
Messages postés
56
Date d'inscription
mardi 13 février 2007
Statut
Membre
Dernière intervention
22 juillet 2014
-
Messages postés
276
Date d'inscription
mercredi 22 septembre 2010
Statut
Membre
Dernière intervention
8 janvier 2014
-
Bonjour,
Débutant en html et encore plus en JavaScript, je cherche à interagir entre différentes zones de ma page qui se compose comme la figure ci dessous.
-----------
zone1 ( Frame : menu)
-----------
Zone2 ( Frame : bandeau d'images défilantes)
-----------
Zone3 ( Frame : coeur de la page divisées en 4 iframes)

| Zone4 | Zone5 | Zone6 | Zone7 |

-----------
Zone8 ( Frame : infos de copyright .....)
-----------

J'arrive à interagir de :
Zone1 vers Zone2, Zone3, Zone8
Zone4 vers Zone5, Zone6, Zone7, Zone2
avec : parent.frames['zone2'].location.href = "mapage.html"; depuis zone1
parent.frames['Zone5'].location.replace("mapage.html"); depuis zone4

Mais je n'arrive pas à interagir de Zone2 vers Zone4, Zone5, Zone6 ou Zone7
j'ai essayé des
parent.document.getElementById('Zone5').src = "mapage.html"; depuis zone2
mais rien n'y fait

Quelqu'un saurait-il quelle est la bonne formulation ? Sachant que depuis Zone2 je veux modifier Zone6 et Zone7 donc avec une fonction javascript

Par avance, merci.

17 réponses

Messages postés
276
Date d'inscription
mercredi 22 septembre 2010
Statut
Membre
Dernière intervention
8 janvier 2014
3
Autement dit cela fonctionne avec les numéros ?
Le décallage est normal les frames (et tous les tableaux en javascript) sont indicées à partir de zéro.
Messages postés
276
Date d'inscription
mercredi 22 septembre 2010
Statut
Membre
Dernière intervention
8 janvier 2014
3
Sauf erreur de ma part, de zone2 vers zone 4 il faut remonter pour accéder à zone3 avec un parent.frames['Zone3']; puis redescendre vers zone4 avec un parent.frames['Zone3'].frames['Zone4'];

Autrement dit les frames Zone4, Zone5, Zone6 et Zone7 sont des enfants de Zone3.

Mais, parler de frames risque fort de relancer des guerres de religion...
Messages postés
56
Date d'inscription
mardi 13 février 2007
Statut
Membre
Dernière intervention
22 juillet 2014

Merci de me répondre,

J'ai essayé :

parent.frames['Zone3'].frames['Zone4'].location.replace( 'No Angel/Zone7.html');
parent.frames['Zone3'].frames['Zone4'].location.href = 'No Angel/Zone7.html';

mais aucune des 2 fonctionnent
Messages postés
56
Date d'inscription
mardi 13 février 2007
Statut
Membre
Dernière intervention
22 juillet 2014

Merci de me répondre,

J'ai essayé :

parent.frames['Zone3'].frames['Zone4'].location.replace( 'Zone7.html');
parent.frames['Zone3'].frames['Zone4'].location.href = 'Zone7.html';

mais aucune des 2 fonctionnent
Messages postés
56
Date d'inscription
mardi 13 février 2007
Statut
Membre
Dernière intervention
22 juillet 2014

Concernant les 'guerres de religions' au sujet des frames, les pages créées servent justes pour une interface html qui ne sera pas mises sur le web
Messages postés
276
Date d'inscription
mercredi 22 septembre 2010
Statut
Membre
Dernière intervention
8 janvier 2014
3
N'y aurait-il pas moyen de voir la nature de l'objet parent.frames['Zone3'] et lister son contenu de la manière suivante (à réaliser dans Internet Explorer et Firefox qui réagissent différemment).

var i,c,obj=parent.frames['Zone3'];
// Voir la nature de l'objet
alert(typeof(obj));
// Si c'est effectivement in objet
c='';
for (i in obj) c+=' '+i+'=>'+obj[i];
alert(c);
Messages postés
56
Date d'inscription
mardi 13 février 2007
Statut
Membre
Dernière intervention
22 juillet 2014

J'ai testé ton code avec

<script language="Javscript" type="text/Javascript">
function test()
{
var i,c,obj=parent.frames['Zone3'];
// Voir la nature de l'objet
alert(typeof(obj));
// Si c'est effectivement in objet
c='';
for (i in obj) c+=' '+i+'=>'+obj[i];
alert(c);
}
</script>
Et utilisé avec un

j'ai une 1°alerte avec l'indication : Undefined
et une 2° avec rien d'indiqué
Messages postés
56
Date d'inscription
mardi 13 février 2007
Statut
Membre
Dernière intervention
22 juillet 2014

sous IE et firefox
Messages postés
276
Date d'inscription
mercredi 22 septembre 2010
Statut
Membre
Dernière intervention
8 janvier 2014
3
J'ai également essayé (et contrairement à mes souvenirs) le tableau des frames concerne l'ensemble de celles-ci lorsque la page principale est libellée comme suit.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<HTML lang="fr">
<HEAD>
<META http-equiv="content-type" content="text/html; charset=utf-8">
<META name="generator" content="PSPad editor, www.pspad.com">
<TITLE>Frames</TITLE>
<style type="text/css">
</style>
<script type="text/javascript">
</script>
</HEAD>
<FRAMESET COLS="20%,30%,50%">
<FRAME SRC="frame1.html" NAME="gauche">
<FRAME SRC="frame2.html" NAME="centre">
<FRAMESET ROWS="20%, 30%, 50%">
<FRAME SRC="frame3.html"  NAME="droit_haut">
<FRAME SRC="frame4.html"  NAME="droit_milieu">
<FRAME SRC="frame5.html" NAME="droit_bas">
</FRAMESET>
</FRAMESET>
</HTML>


Alors cette frame n°1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<HTML lang="fr">
<HEAD>
<META http-equiv="content-type" content="text/html; charset=utf-8">
<META name="generator" content="PSPad editor, www.pspad.com">
<TITLE>frame 1</TITLE>
<style type="text/css">
</style>
</HEAD>

Frame1 nom gauche
<script type="text/javascript">
var obj=parent.frames;
c='';
for (i=0;i<obj.length;i++) c+='\n '+i+'=>'+obj[i].document.location;
alert(c);
parent.frames[4].document.location='frame5bis.html'
</script>

</HTML>


affiche les adresses des cadres dans Internet Explorer mais pas dans Mozilla FireFox (à creuser). Cependant, elle recharge effectivement la page du dernier cadre avec les deux navigateurs.

En toute hypothèse la méthode replace demande deux arguments et paraît inadaptée compte tenu de la variabilité du premier.
Messages postés
56
Date d'inscription
mardi 13 février 2007
Statut
Membre
Dernière intervention
22 juillet 2014

pour ma page d'index : j'ai mis
<html>
<head>
<title>Audio Collection</title>

</head>
<frameset rows="5%,19%,67%,8%" frameborder=no>
<frame src="Utils\Zone1.html" name="zone1"> <!-- 1° ligne -->
<frame src="Utils\Zone2.html" name="zone2"> <!-- 2° ligne -->
<frameset cols="20%,20%,20%,40%" frameborder=no name="zone3" > <!-- 3° ligne -->
<frame src="Utils\Zone4.html" name="zone4"> <!-- 1° colonne -->
<frame src="Utils\Zone5.html" name="zone5"> <!-- 2° colonne -->
<frame src="Utils\Zone6.html" name="zone6"> <!-- 3° colonne -->
<frame src="Utils\zone7.html" name="zone7"><!-- 4° colonne -->
</frameset>
<frame src="Utils\Zone8.html" name="zone8"> <!-- 4° ligne -->
</frameset>
</html>


ma page zone3 :
<html>
<head>
<script language="Javscript" type="text/Javascript">
function ouvrePageD()
{
document.getElementById('Zone4').src = "D.html";
document.getElementById('Zone5').src = "../../Utils/Blank.html";
document.getElementById('Zone6').src = "../../Utils/Blank.html";
document.getElementById('Zone7').src = "../../Utils/Blank.html";
}
</script>			
</head>	




</html>



ma page zone2 :
<html>
<head>
<script language="Javscript" type="text/Javascript">
function test1()
{
parent.frames['zone5'].location.href = 'Zone5.html';//marche pas
parent.frames['zone6'].location.replace( 'Zone6.html');//marche pas				
parent.document.getElementById('Zone7').src='Zone7.html';//marche pas
}
</script>
</head>



</html>
Messages postés
56
Date d'inscription
mardi 13 février 2007
Statut
Membre
Dernière intervention
22 juillet 2014

en fait ma page d'index : j'ai mis
<html>
     <head>
     </head>
     <frameset rows="5%,15%,71%,8%" frameborder=no>
<frame src="Utils\Zone1.html" name="zone1" frameborder=no> <!-- 1° ligne -->
<frame src="Utils\Zone2.html" name="zone2" frameborder=no> <!-- 2° ligne -->
<frame src="Utils\Zone3.html" name="zone3" frameborder=no> <!-- 3° ligne -->
<frame src="Utils\Zone8.html" name="zone8" frameborder=no> <!-- 4° ligne -->
     </frameset>
</html>
Messages postés
276
Date d'inscription
mercredi 22 septembre 2010
Statut
Membre
Dernière intervention
8 janvier 2014
3
Et sans href, ni de replace mais simplement avec
parent.frames['zoneN'].document.location ou 
parent.frames[N-1].document.location='monFichier.html' ?
Messages postés
56
Date d'inscription
mardi 13 février 2007
Statut
Membre
Dernière intervention
22 juillet 2014

c'est pas mieux
Messages postés
56
Date d'inscription
mardi 13 février 2007
Statut
Membre
Dernière intervention
22 juillet 2014

en fait en utilisant :

parent.frames[N-1].document.location='monFichier.html'

l'affichage se fait dans zone3 si je N-1 à 2
Messages postés
56
Date d'inscription
mardi 13 février 2007
Statut
Membre
Dernière intervention
22 juillet 2014

le soucis c'est que l'affichage se fait dans 'tout' Zone3 et pas dans la partie zone7 de zone3
Messages postés
56
Date d'inscription
mardi 13 février 2007
Statut
Membre
Dernière intervention
22 juillet 2014

Je vais tout remettre à plat et essayer de faire autrement
Merci de ton aide.
Messages postés
276
Date d'inscription
mercredi 22 septembre 2010
Statut
Membre
Dernière intervention
8 janvier 2014
3
Alors, il conviendrait de revenir à mon schéma initial ? Il doit être possible d'y voir clair avec des alerts et les quelques instructions précitées typeof, inventaire des éléments d'un objet ou d'un tableau ... etc.

Bonne continuation...