SELFHTML

Forum SELFHTML: Archives:
Pb avec les cadres

Page d'information: vue d'ensemble
vers le bas 

(JAVASCRIPT) Pb avec les cadres

Le message suivant est de: Lucie, Adresse électronique titi.na@mail.com, 22. 05. 2003, 13:15

Bonjour,


J'ai un menu déroulant en javascript mais il se déroule kusqu'en dehors de son cadre.
Y a t-il un moyen de permettre a mon menu de chevaucher le cadre et de s'afficher jusque dans l'autre cadre?


Voici le script :



var nbmenu=5;  /*Nombre de menu*/

/*Titre des menus*/
var valmenu = new Array (nbmenu);
valmenu[0] = "Nouvelles1";
valmenu[1] = "Nouvelles2";
valmenu[2] = "Nouvelles3";
valmenu[3] = "Nouvelles4";
valmenu[4] = "Nouvelles5";

/*Titre et liens des sous menus*/
var valssmenu = new Array (nbmenu);
valssmenu[0] = new Array();
valssmenu[1] = new Array();
valssmenu[2] = new Array();
valssmenu[3] = new Array();
valssmenu[4] = new Array();

var valssmenulien = new Array(nbmenu)
valssmenulien[0] = new Array();
valssmenulien[1] = new Array();
valssmenulien[2] = new Array();
valssmenulien[3] = new Array();
valssmenulien[4] = new Array();

var nbssmenu = new Array();

/*Menu1*/
nbssmenu[0] = 3;
valssmenu[0][0] = "Article11";
valssmenulien[0][0] = "../doc/Article11.htm";

valssmenu[0][1] = "Article12";
valssmenulien[0][1] = "../doc/Article12.htm";

valssmenu[0][2] = "Article13";
valssmenulien[0][2] = "../doc/Article13.htm"


/*Menu2*/
nbssmenu[1] = 2;
valssmenu[1][0] = "Article21";
valssmenulien[1][0] = "../doc/Article21.htm";

valssmenu[1][1] = "Article22";
valssmenulien[1][1] = "../doc/Article22.htm";

/*Menu3*/
nbssmenu[2] =2;
valssmenu[2][0] = "Article31";
valssmenulien[2][0] = "../doc/Article31.htm";

valssmenu[2][1] = "Article32";
valssmenulien[2][1] = "../doc/Article32.htm";

/*Menu4*/
nbssmenu[3] = 1;
valssmenu[3][0] = "Article41";
valssmenulien[3][1] = "../doc/Article41.htm";

/*Menu5*/
nbssmenu[4] = 1;
valssmenu[4][0] = "Article51";
valssmenulien[4][1] = "../doc/Article51.htm";


posYmenu = 10;  /*Position du menu en hauteur*/
bgcolor='#D2FFFF';
bgcolor2='#FFFFD7';
needcenter =false; /*Menu centré ou non*/
if(!needcenter)  /*Si menu non centré*/
 posXmenu = 100; /*Emplacement du menu par rapport au bord gauche*/
else
 { if (document.all)
  posXmenu = (document.body.clientWidth/2)-(400/2); /*(400/2) si 4 menus*/
 else
  posXmenu = (window.innerWidth/2)-(400/2);    /*(400/2) si 4 menus*/
 }
document.write('<style type="text/css">');
document.write('.popper { POSITION: absolute; VISIBILITY: hidden; z-index:3; }');
document.write('#topgauche { position:absolute; top:'+posYmenu+'px; left:'+posXmenu+'px; z-index:10; }')
document.write('A:hover.ejsmenu {color:#000000; text-decoration:none;}')
document.write('A.ejsmenu {color:#000000; text-decoration:none;}')
document.write('</style>')
document.write('<DIV class=popper id=topdeck></DIV>');


/*Les sous menus*/
zlien = new Array;
 for (var i=0;i<nbmenu;i++)
 {
 zlien[i] = new Array;
  for (var j=0;j<nbssmenu[i];j++)
  {
  zlien[i][j] = '<A HREF="'+valssmenulien[i][j]+'" CLASS=ejsmenu TARGET="Principal">'+valssmenu[i][j]+'</A>';
  }
 }

var nava = (document.layers);
var dom = (document.getElementById);
var iex = (document.all);
if (nava) { skn = document.topdeck }
else if (dom) { skn = document.getElementById("topdeck").style }
else if (iex) { skn = topdeck.style }
skn.top = posYmenu+24;

function pop(msg,pos)
{
skn.visibility = "hidden";
a=true
skn.left = posXmenu+pos;
var content ="<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 BGCOLOR=#000000 WIDTH=150><TR><TD><TABLE WIDTH=100% BORDER=0 CELLPADDING=0 CELLSPACING=1>";
pass = 0
while (pass < msg.length)
 {
 content += "<TR><TD BGCOLOR="+bgcolor+" onMouseOver=\"this.style.background='"+bgcolor2+"'\" onMouseOut=\"this.style.background='"+bgcolor+"'\" HEIGHT=20><FONT SIZE=1 FACE=\"Verdana\">&nbsp;&nbsp;"+msg[pass]+"</FONT></TD></TR>";
 pass++;
 }
content += "</TABLE></TD></TR></TABLE>";
if (nava)
  {
    skn.document.write(content);
   skn.document.close();
   skn.visibility = "visible";
  }
    else if (dom)
  {
   document.getElementById("topdeck").innerHTML = content;
   skn.visibility = "visible";
  }
    else if (iex)
  {
   document.all("topdeck").innerHTML = content;
   skn.visibility = "visible";
  }
}
function kill()
{
 skn.visibility = "hidden";
}
document.onclick = kill;

document.write('<DIV ID=topgauche><TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 BGCOLOR=#000000 WIDTH='+nbmenu*100+'><TR><TD><TABLE CELLPADING=0 CELLSPACING=1 BORDER=0 WIDTH=100% HEIGHT=25><TR>') /*WIDTH=400 quand 4 menus*/
 for (i=0;i<nbmenu;i++)
  {
document.write('<TD WIDTH=100 ALIGN=center BGCOLOR='+bgcolor+' onMouseOver="this.style.background=\''+bgcolor2+'\';pop(zlien['+i+'],'+i*100+')" onMouseOut="this.style.background=\''+bgcolor+'\'"><A onClick="return(false)" onMouseOver="pop(zlien['+i+'],'+i*100+')" href=# CLASS=ejsmenu><FONT SIZE=1 FACE="Verdana">'+valmenu[i]+'</FONT></a></TD>')
  }
document.write('</TR></TABLE></TD></TR></TABLE></DIV>')


 
vers le hautvers le bas 

(JAVASCRIPT) Pb avec les cadres

Le message suivant est de: Patrick Andrieu, Adresse électronique nospam@nospam.fr, 22. 05. 2003, 16:25

Salut Lucie!


»» J'ai un menu déroulant en javascript mais il se déroule kusqu'en dehors de son cadre.
»» Y a t-il un moyen de permettre a mon menu de chevaucher le cadre et de s'afficher jusque dans l'autre cadre?


Malheureusement non.

Patrick


 
vers le hautvers le bas 

(JAVASCRIPT) Pb avec les cadres

Le message suivant est de: Lucie, Adresse électronique titi.na@mail.com, 23. 05. 2003, 08:12

Donc les sites qui ont de tels menu n'ont pas de cadres?


 
vers le hautvers le bas 

(JAVASCRIPT) Pb avec les cadres

Le message suivant est de: Patrick Andrieu, Adresse électronique nospam@nospam.fr, 23. 05. 2003, 13:30
http://www.selfhtml.com.fr/equipe/patrick.htm

Rebonjour!


»» Donc les sites qui ont de tels menu n'ont pas de cadres?

Oui, certainement: JavaScript ne concerne (n'affecte) que le document dans lequel est placé le code. Si tu as deux cadres, tu as deux instances de l'objet "document", et même deux instances de l'objet "windows".

Ton menu affiche donc ses options dans le cadre où se trouve le code, et ne peut pas déborder sur l'autre, l'objet "document" qui est invoqué étant celui du cadre où se trouve le code:

var nava = (document.layers);
            ^^^^^^^^
var dom = (document.getElementById);
           ^^^^^^^^

Il y a peut-être des possibilités complexes échappant à mes connaissances, mais ce ne sera certainement pas du gâteau!

Pour comprendre, je te renvoie aux chapitres sur JavaScript et DOM (Document Object Model) de la docu:

http://selfhtml.selfhtml.com.fr/javascript/index.htm

Voir aussi HTML-Dynamique:

http://selfhtml.selfhtml.com.fr/dhtml/index.htm

Patrick


 
vers le hautvers le bas 

(JAVASCRIPT) Pb avec les cadres

Le message suivant est de: Lucie, Adresse électronique lu_lu_mi@hotmail.com, 25. 05. 2003, 18:25

OK et bien, merci pour ton aide.


 
vers le haut

© 1998-2004 Adresse électronique selfhtml@fr.selfhtml.org