Lien entre Frame et Iframe

Résolu
drexl Messages postés 56 Date d'inscription mardi 13 février 2007 Statut Membre Dernière intervention 22 juillet 2014 - 15 mars 2011 à 14:52
007Julien Messages postés 276 Date d'inscription mercredi 22 septembre 2010 Statut Membre Dernière intervention 8 janvier 2014 - 16 mars 2011 à 20:19
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

007Julien Messages postés 276 Date d'inscription mercredi 22 septembre 2010 Statut Membre Dernière intervention 8 janvier 2014 4
16 mars 2011 à 14:07
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.
3
007Julien Messages postés 276 Date d'inscription mercredi 22 septembre 2010 Statut Membre Dernière intervention 8 janvier 2014 4
15 mars 2011 à 16:09
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...
0
drexl Messages postés 56 Date d'inscription mardi 13 février 2007 Statut Membre Dernière intervention 22 juillet 2014
15 mars 2011 à 16:29
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
0
drexl Messages postés 56 Date d'inscription mardi 13 février 2007 Statut Membre Dernière intervention 22 juillet 2014
15 mars 2011 à 16:30
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
drexl Messages postés 56 Date d'inscription mardi 13 février 2007 Statut Membre Dernière intervention 22 juillet 2014
15 mars 2011 à 16:34
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
0
007Julien Messages postés 276 Date d'inscription mercredi 22 septembre 2010 Statut Membre Dernière intervention 8 janvier 2014 4
15 mars 2011 à 17:17
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);
0
drexl Messages postés 56 Date d'inscription mardi 13 février 2007 Statut Membre Dernière intervention 22 juillet 2014
16 mars 2011 à 07:42
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é
0
drexl Messages postés 56 Date d'inscription mardi 13 février 2007 Statut Membre Dernière intervention 22 juillet 2014
16 mars 2011 à 07:43
sous IE et firefox
0
007Julien Messages postés 276 Date d'inscription mercredi 22 septembre 2010 Statut Membre Dernière intervention 8 janvier 2014 4
16 mars 2011 à 11:28
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.
0
drexl Messages postés 56 Date d'inscription mardi 13 février 2007 Statut Membre Dernière intervention 22 juillet 2014
16 mars 2011 à 11:55
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>
0
drexl Messages postés 56 Date d'inscription mardi 13 février 2007 Statut Membre Dernière intervention 22 juillet 2014
16 mars 2011 à 12:08
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>
0
007Julien Messages postés 276 Date d'inscription mercredi 22 septembre 2010 Statut Membre Dernière intervention 8 janvier 2014 4
16 mars 2011 à 12:09
Et sans href, ni de replace mais simplement avec
parent.frames['zoneN'].document.location ou 
parent.frames[N-1].document.location='monFichier.html' ?
0
drexl Messages postés 56 Date d'inscription mardi 13 février 2007 Statut Membre Dernière intervention 22 juillet 2014
16 mars 2011 à 12:15
c'est pas mieux
0
drexl Messages postés 56 Date d'inscription mardi 13 février 2007 Statut Membre Dernière intervention 22 juillet 2014
16 mars 2011 à 12:19
en fait en utilisant :

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

l'affichage se fait dans zone3 si je N-1 à 2
0
drexl Messages postés 56 Date d'inscription mardi 13 février 2007 Statut Membre Dernière intervention 22 juillet 2014
16 mars 2011 à 14:13
le soucis c'est que l'affichage se fait dans 'tout' Zone3 et pas dans la partie zone7 de zone3
0
drexl Messages postés 56 Date d'inscription mardi 13 février 2007 Statut Membre Dernière intervention 22 juillet 2014
16 mars 2011 à 15:48
Je vais tout remettre à plat et essayer de faire autrement
Merci de ton aide.
0
007Julien Messages postés 276 Date d'inscription mercredi 22 septembre 2010 Statut Membre Dernière intervention 8 janvier 2014 4
16 mars 2011 à 20:19
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...
0