Newsgroup: it.comp.lang.javascript
Titolo: Bug di IE? aiutooooooooooooo

se prendo l'altezza fi un layer ontenuto nella pagina me la
restituisce normalmente ma se il layer e' all'interno di un'altro
layer mi restituisce correttamente la larghessa mentre mi da come
altezza 0!!!!
aiutoooooo
Kirys
--------------------------------------------------
Brayan Fix Kirys Solfory
E-Mail: 
Ki...@technologist.com
 
For Free Software go to: 
http://Kiryssoft.cjb.net

Ciao,
usa obj.offsetWidth
dovrebbe andare..
document.all['nomeobj'].offsetWidth
--
Bye
        Ro<*¿*>berto

document.all['nomeobj'].offsetWidth
io uso questa sintassi
this.width=(bi.ver4)?this.css.pixelWidth:this.layer.offsetWidth;
this.height=(bi.ver4)?this.css.pixelHeight:this.layer.offsetHeight;
e ho IE5
layer=document.all['nomeobj']
css=document.all['nomeobj'].styles
e mentre offsethtight funge offsetwidth no!
AIUTOOOOO


prova ad evitare:
document.all['nomeobj'].styles
e usa
layer.offset..


layer.offset..
offsetheight restituisce sempre 0 mentre offsetwidth mi da il valore
corretto :(((((((((((((((((((((((((((((((((((((((((((((((((((


 usa obj.offsetWidth

..mmmmhh..
non funge con oggetti dhtml creati al volo,
cioč se tu fai un body.innerHTML="<DIV....>testo o tabella ecc.."
e poi provi a prendere le dimensioni con clientWidth, ottieni
un valore a 0, ma non non se usi offsetWidth..
non chiedermi perchč, ma in passato in funzioni dove
l'ha usato ho sempre ottenuto quanto sopra..
Bye
    Ro<*ż*>berto

corretto :(((((((((((((((((((((((((((((((((((((((((((((((((((
cio accade solo se in layer si trova dentro un'altro layer
Aiutatemi....
Magari esiste un'aggiornamento?


Ciao,
posta il codice, ci guardo..


Ho provato a schematizzare le proprieta' width, top ecc..di un layer
(testato con 2 layer (DIV) inclusi con l'esterno sia assoluto sia
relativo e l'interno sempre assoluto).
Ho notato che  IE mantiene le misure minime, non le massime,  assegnate
con CSS mentre NS assegna sempre le misure del contenuto; sembra quindi
inutile usare in lettura le proprieta' 'style....'; è corretto?.
Se volete provare a controllare e completare forse riusciamo a fare un
po' di chiarezza per tutti.
Grazie, Paolo
Descrizione                                           IE
NS
distanza verticale assoluta                      ??
object.pagY
distanza orizzontale assoluta                   ??
obyect.pagX
altezza reale
object.offsetHeight        .document.width
larghezza reale                                      object.offsetWidth
.document.height
distanza verticale dal layer genitore        object.offsetTop
object.top; object.y
distanza orizzontale dal layer genitore     object.offsetLeft
obyect.left; object.x
altezza zona utile (tolto i bordi)               object.clientHeight
larghezza zona utile (tolto i bordi)           object.clientWidth
ampiezza bordo vert.                             object.clientTop
ampiezza bordo oriz.                            object.clientLeft
Valori indicati con i CSS (non sempre reali)
formato stringa                                        .style.height
.style.width
                                                              .style.top
.style.left
in pixel
.style.pixel.
nell'unità di misura usata                          .style.pos..

Noi ci abbiamo provato un bel po' in dHTML.js, ma niente da fare.
IE non ne vuole sapere di dire le dimensioni del layer se prima non le si inizializza con javascript almeno una volta... ovvero:
document.all.nomelayer.style.pixelLeft
(stringa vuota)
document.all.nomelayer.style.pixelLeft=100
(il layer viene spostato a 100 px dal bordo)
document.all.nomelayer.style.pixelLeft
(ora restituisce 100)
Ed il problema ce l'ha anche IE5...
((( 
Se qualcuno ha risolto ci faccia un fischio, cosě vediamo anche di sistemare dHTML.js
Bye
tFontN
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
<?xml version="1.0" encoding="UTF-8"?>
<sign>
<author>the fly on the net</author>
<description>il webmaster piů alto del mondo </description>
<a href="
http://www.probo.it/aoj
">Art of JavaS.</a>
<a href="
http://www.devil-inside.net/
">the devil inside</a>
<a href="mailto:
net...@netbusiness.it
">e-mail</a>
</sign>- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

posta il codice, ci guardo..
function binfo() {
if (navigator.appname=="Netscape") this.b="ns"; else
	if (navigator.appname=="Microsoft Internet Explorer")
this.b="ie"; else
		this.b="uk";
	this.ver=parseInt(navigator.appVersion)
	this.ver4=(this.ver=4)
	this.dhtml=(this.b != "uk" && this.ver >=4)
}
bi= new binfo();
/* Creazione */
function klayer (layer) {
	/* Settaggio del layer */
	this.layer=layer;
	if (isIE())  this.css=this.layer.style ;
		else
		this.css=layer;
	/* proprietà di base */
	if (isIE()) {
		this.top=this.css.pixelTop;
		this.left=this.css.pixelLeft;
this.width=(bi.ver4)?this.css.pixelWidth:this.layer.offsetWidth;
this.height=(bi.ver4)?this.css.pixelHeight:this.layer.offsetHeight;
		this.innerlay=layers();
	} else {
	this.top=this.css.top;
	this.left=this.css.left;
	this.width=this.css.clip.width;
	this.height=this.layer.clip.height;
	this.innerlay=layer.document.layers; 
	}
	this.test=true; 
 
}
se il layer e' dentro un'altro layer width mi da il valore corretto
mentre height mi da 0 :(
uso IE5 quindi per me bi.ver4=false;
ciao
Kirys


posta anche l'html di un layer che passi ...


Ciao,
fra i miei vecchi script ho questo,
mi sembra di ricordare che funziona..
///////GET dimensione veloce del objDHTML ////////
// ritorna un array(top, left, height, width)
//
function GetClipObj(objDHTML){
if(!objDHTML)return new Array(0,0,0,0);
if(objDHTML.self)return GetClip_Win(objDHTML);
 return new Array(
     (document.all? objDHTML.offsetTop:objDHTML.top),
  (document.all? objDHTML.offsetLeft:objDHTML.left),
  document.all? objDHTML.scrollHeight :objDHTML.clip.height,
  document.all? objDHTML.scrollWidth : objDHTML.clip.width
 );
}
file://----------------------------------------------------
c'è anche una versione + complessa che calcola
la posizione assoluta, risalendo anche nei layer
parent con ....parentLayer e con IE per gli
oggetti con position relative con un ....parentElement


posta anche l'html di un layer che passi ...
<DIV id="test1l" Style="position:absolute;top:1; left:1;
visibility:visible;width:50;height:100; z-index:3; width:70">
<DIV id="test2l" Style="position:absolute;top:1; left:1;
visibility:visible;width:10; z-index:3; width:70">
prova<BR>
xzcdFC
DSF<BR>
</DIV>
provaprovaprova safds sdgfa
dsgfd
g
afd
hdghjhsdfjhsdg fdahjfdsh
</DIV>
e lo script:
test1=new klayer(layers().test1l);
document.writeln(test1.width);
document.writeln(test1.height);
test2= new klayer(test1.innerlay.test2l);
document.writeln(test2.width);
document.writeln(test2.height);
ciao e grazie


ciao,
ti ritorna le esatte dimensioni se provi con :
<DIV id="test1l" onmouseover="alert(GetClipObj(this))"
Style="position:absolute;top:1; left:1;
visibility:visible;width:50;height:100; z-index:3; width:70">
<DIV id="test2l" Style="position:absolute;top:1; left:1;
visibility:visible;width:10; z-index:3; width:70">
prova<BR>
xzcdFC
DSF<BR>
</DIV>
provaprovaprova safds sdgfa
dsgfd
g
afd
hdghjhsdfjhsdg fdahjfdsh
</DIV>
e lo script:
///////GET dimensione veloce del objDHTML ////////
// ritorna un array(top, left, height, width)
//
function GetClipObj(objDHTML){
if(!objDHTML)return new Array(0,0,0,0);
if(objDHTML.self)return GetClip_Win(objDHTML);
return new Array(
     (document.all? objDHTML.offsetTop:objDHTML.top),
  (document.all? objDHTML.offsetLeft:objDHTML.left),
  document.all? objDHTML.scrollHeight :objDHTML.clip.height,
  document.all? objDHTML.scrollWidth : objDHTML.clip.width
);
}


 wrote:

Grazie ci provo subito
PS GetClip_Win che sarebbe
Ciao




Funzia... ho sostituito offsetheight con scrollheight ed ora funge...
Grazie mille
un'altra domandina
come mai i layer dentro i layer non si nestano in IE?
ovvero se il layer interno e' + grande di quello esterno si vede
completamente lo steso? (ex quello precedente)
grazie


Ciao,
devi settare le dimensioni con un clip..
sia con IE che con Netscape..


sia con IE che con Netscape..
La proprieta' clip esiste su entrambi?


Si,
///////SET dimensione del objDHTML////////
// function SetClip_objDHTML(objDHTML, t(top), l(left), b(botton), r(right))
//
function SetClip_objDHTML(objDHTML, t, l, b, r) {
 if(!objDHTML)return;
 if(document.layers) { objDHTML.clip.left = l; objDHTML.clip.right = r;
objDHTML.clip.top = t;  objDHTML.clip.bottom = b;}
 else { objDHTML.style.clip = "rect("+t+","+r+","+b+","+l+")";}
}
file://----------------------------------------------------


scusa, ma in quale caso un oggetto con style.position = "absolute" non ha già
pixelLeft e pixelTop inizializzati???
al massimo guarda, usa offsetTop e offsetLeft, anche se non sempre corrispondono
perfettamente


 wrote:

arigrazie :D


perfettamente
Infatti... non è la stessa cosa... :-(
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
<?xml version="1.0" encoding="UTF-8"?>
<sign>
<author>the fly on the net</author>
<description>il webmaster più alto del mondo </description>
