Newsgroup: it.comp.lang.javascript
Titolo: Far apparire un layer crossbrowser

Come fare?
E dove reperire le info sulle diverse implementazioni
nei browsers?
Grazie

 Come fare?
Posto queste semplicissime funzioni nella speranza di vedere sempre piu`
siti anybrowser: sono testate con NS 4.77, IE 4 e 5, Mozilla, Opera 5,
Konqueror 2.1.1. Inutile dire che commenti, patch e via dicendo saranno
ben accolti!
Viene dato per scontato che il layer venga creato con il tag <div> e che
vengano stettati visibility, top, left, width e height (se devono essere
modificati) nel relativo CSS.
// Inizializzazione
var sV="document.getElementById('";
var eV="').style.";
var bR=".";
if(navigator.appName=="Netscape" && navigator.appVersion[0]<="4")
//Potrebbe andare bene anche if(document.layers) ?
{
 sV="document.layers['";
 eV="'].";
 bR="NS";
}
else if(document.all)
{
 sV="document.all.";
 eV=".style.";
 bR="IE";
}
function screenWidth()
{
 if(bR=="IE") return document.body.clientWidth; 
 else return window.innerWidth;
}
function screenHeight()
{
 if(bR=="IE") return document.body.clientHeight;
 else return window.innerHeight;
}
// Setta il valore dell'attributo "attr" del tag "id" al valore "val"
function setAttr(id,attr,val) { eval(sV+id+eV+attr+"='"+val+"'"); }
// Legge il valore dell'attributo "attr" del tag "id" function
getAttr(id,attr) { return eval(sV+id+eV+attr); }
function hideLayer(id) { setAttr(id,"visibility","hidden"); }
function showLayer(id) { setAttr(id,"visibility","visible"); }
// Movimento in coord. assolute
function moveAbsLayer(id,x,y)
{
 setAttr(id,"left",x);
 setAttr(id,"top",y);
}
// Movimento in coord. relative alla posizione corrente function
moveRelLayer(id,x,y)
{
 leftP=parseInt(getAttr(id,"left"));
 topP=parseInt(getAttr(id,"top"));
 if(isNaN(leftP)) leftP=0;
 if(isNaN(topP)) topP=0;
 setAttr(id,"left",leftP+parseInt(x)); setAttr(id,"top",topP+parseInt(y));
}
// Movimento di un layer in coordinate percentuali. 
// Muove solo le coord. >= 0. Riferimento al centro.
function moveScreenLayer(id,w,h,x,y)
{
 if(x>=0) setAttr(id,"left",(screenWidth()-w/2)*x/100); if(y>=0)
 setAttr(id,"top",(screenHeight()-h/2)*y/100);
}
A risentirci
\  Davide G. Borin
\\ !!Scudo anti-spam attivo!! Togliere le x e "eliminami" dall'indirizzo
\\\_____________________________________________________________________

 ha scritto nel messaggio
news:YisZ6.25677$4J1.1...@news2.tin.it...

http://www.jsdir.com
  FAQ - DHTML e/o Tutorials
--
andreotta fabiano
WebMªster xxxxxxxxxx
afd...@tiscalinet.it
http://www.aticommerce.com
http://www.jsdir.com
http://www.dxml.it
  (u.c.)

Lo script è buono, ma manca qualcosa, cioè il reload delle pagine per NN4 e
OPERA.
Infatti se ridimensioni la finestra di questi due browser, gli elementi non
sono più al loro posto, per cui necessitano di un reload della pagina,
meglio se in automatico.
Ciao, Luca

 NN4 e OPERA.
Questo e` un problema noto, ma onestamente la soluzione del reload
automatico non mi piace neanche un po', primo perche` il ridimensinamento
della finestra credo venga fatto molto raramente dall'utente, secondo
perche` il reload implica un'occupazione di banda possibilmente anche
significativa, quindi deve essere lasciato alla decisione dell'utente.
Se comunque lo si vuole mettere lo stesso, basta un:
<body ... onResize="document.reload()">
(circa, non ricordo mai la sintassi esatta perche` non lo uso)
Non mi pare sia da mettere nelle funzioni! 8-)


=0)?true:false;
function aggiorna(){
if(n||op){
    location.reload();
}
}
function init(){
window.resize=aggiorna;
}
window.onload=init;
Ciao, Luca

 caricata, il browser carica gli elementi dalla cache.
Non ne sarei cosi` certo: il pulsante "Reload" serve (in teoria) proprio a
forzare il ricaricamento della pagina e di tutti i suoi elementi; immagino
che la funzione JavaScript si comporti allo stesso modo.
Dato che purtroppo e` difficile essere certi del funzionamento del browser
a riguardo e dato che il ridimensionamento della finestra e` generalmente
un evento raro, da parte mi preferisco non rischiare.
