![]() |
Forum SELFHTML: Archives: |
|
|
Le message suivant est de: Lucie,
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\"> "+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>')
Le message suivant est de: Patrick Andrieu,
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
Le message suivant est de: Lucie,
titi.na@mail.com, 23. 05. 2003, 08:12
Donc les sites qui ont de tels menu n'ont pas de cadres?
Le message suivant est de: Patrick Andrieu,
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
Le message suivant est de: Lucie,
lu_lu_mi@hotmail.com, 25. 05. 2003, 18:25
OK et bien, merci pour ton aide.
© 1998-2004
selfhtml@fr.selfhtml.org