Newsgroup: it.comp.lang.javascript
Titolo: posizionamento dei layer

salve a tutti
ho la necessita' di posizionare dinamicamente una tabellina che tengo in un layer
separato. Ho una pagina che contiene una grossa tabella (fino a trenta per trenta),
generata dinamicamente da un server e una table su un altro layer con dei campi a 
sola lettura.
Ogni casella della tabella principale contiene un dato base (un numero) ed e' un link 
a una funzione javascript. Quando il mouse passa sulla casella, vengono aggiornati dei
 campi della tabellina sul layer separato. 
Vorrei che cliccando sulla casella, la tabellina separata venga spostata in prossimita' della casella selezionata, Questo perche' la tabellona e' troppo grossa e, scrollando la finestra principale la
tabellina con i dettagli non sarebbe visibile. 
Potrei collegare ad ogni casella della tabellona le coordinate in cui spostare la tabellina,
ma, non conoscendo le dimensioni del font usate dal browser rischio di spostare il layer
fuori dall'area visibile.
L'ideale sarebbe potere usare un posizionamento relativo alla posizione del mouse o a quella
del link. Qualcuno ha qualche idea su come farlo ?
Grazie
* Fabio *
-- 
Goldenstern's Rules:
	(1) Always hire a rich attorney
	(2) Never buy from a rich salesman.

Se abbiamo ben capito... potresti farlo relativo alla risoluzione... e
quindi per esempio in pixel (px).
--
A presto e buona giornata.
ROBERTO E ALESSANDRO ABBATE
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
responsabili di Galileo - 
http://www.risorse.net
WebMasters & WebDesigners @ Milano
Giornalisti informatici per Go!OnLine
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Per contatti via e-mail: webmaster(at)
risorse.net

 Per contatti via e-mail: webmaster(at)
risorse.net
-- 
A mushroom cloud has no silver lining.

Dopo tante tribolazioni, sono approdato a qualcosa che, ridotto all'osso,
si riassume nel file html allegato.
Sostanzialmente ho la tabellina del venti. Clickando su un numero, appare una finestrella (finta)
che mostra la riga e la colonna su cui passa il mouse (onMouseOver).
Clickando dovunque sullo schermo la finestrella viene spostata dove si trova il mouse (onMouseDown).
Su Netschiopp funziona tutto, su Exploder invece ho alcuni problemi:
1)   Le coordinate del mouse che ottengo dall'evento mousedown sono relativi alla parte visibile 
     e non a tutto il documento, cosi', se si scrolla un po' in giu' il documento la finestrella
     viene posizionata nella parte non visibile del documento (inoltre, scrollando, la finestrella
     scompare misteriosamente).
2)   Anche gli eventi onMouseDown sul documento della finestrella vengono gestiti dall'handler della
     finestra principale, in particolare risulta impossibile chiudere la finestrella perche', cliccando
     sul bottoncino di chiusura si ottiene invece un riposizionamento della finestrella.
Qualcuno riesce a darmi qualche dritta ?
Grazie 
	*Fabio*
---------8<-------- cut here ---------->8------------
<HTML>
<BODY>
<Style> A:link {text-decoration: none; } </Style>
<DIV ID=winfake STYLE="Position:absolute; Visibility:hidden" >
  <TABLE BGcolor=#66AAFF Border=2 >
    <TR ><TD BGcolor=Orange Align=right ><A HREF=Javascript:pop_down() >[X]</A></TD></TR>
    <TR><TD >
      <Form Name=my_form ><Table>
	    <TR><TD>riga</TD><TD><Input name=riga type=text onFocus="this.blur()"> </TR>
	    <TR><TD>colonna</TD><TD><Input name=colonna type=text onFocus="this.blur()"> </TR>
	  </Table></Form>
    </TD></TR>
  </TABLE>
</DIV>
<SCRIPT Language=Javascript1.2>
var isNav = (navigator.appName.indexOf("Netscape") != -1);
var isIE = (navigator.appName.indexOf("Microsoft") != -1);
function pop_down()
{
    if (isNav) document.layers["winfake"].visibility = "hide";
    if (isIE)  document.all["winfake"].style.visibility = "hidden";
}
function pop_up()
{
    if (isNav) document.layers["winfake"].visibility = "show";
    if (isIE)  document.all["winfake"].style.visibility = "visible";
}
function move_window(e) 
{
    if (isNav) {
        document.layers["winfake"].top  = e.y;
        document.layers["winfake"].left = e.x;
    }
    if(isIE) {
        document.all["winfake"].style.top  = window.event.clientY;
        document.all["winfake"].style.left = window.event.clientX;
    }
}
function set_values(i,j)
{
    var form;
    if(isNav) form = document.layers["winfake"].document.my_form;
    if(isIE)  form = document.all["winfake"].document.my_form;
    form.riga.value    = i;
    form.colonna.value = j;
    window.status = "riga = "+i+" colonna="+j;
}
document.onmousedown=move_window;
document.write('<TABLE Border=2>\n');
for (var i=1; i<=20; i++)
{
   document.write('<TR>\n');
   for (var j=1; j<=20; j++)
   {
       document.write( '<TD><A Href="javascript:pop_up()" onmouseover="set_values('+i+','+j+')"> ' +i*j + '</A></TD>\n' );			
   }
   document.write('</TR>\n');
}
document.write('</TABLE>\n');
</SCRIPT>
</BODY>
</HTML>
---------8<-------- cut here ---------->8------------
-- 
There are two kinds of egotists: 1) Those who admit it  2) The rest of us