Newsgroup: it.comp.lang.javascript
Titolo: IFRAME

Come (se è possibile)  rilevare l'altezza del documento caricato dentro un
IFRAME con l'attributo SRC ??
attenzione , l'altezza reale del documento della pagina caricata .......non
l'area visibile dell'iframe rilevabile con
window.frames.Nome_frames.document.body.clientHeight...........
andreotta fabiano
 WebMªster ATI POWER s.n.c.
 
andr...@atipower.it
 
http://www.atipower.it
    -new-
 
http://www.aticommerce.com
 
http://www.afdsoftware.freeweb.org
 
http://www.jsdir.com

window.frames.Nome_frames.document.body.clientHeight...........
Ciao,
scrollHeight ti restituisce un valore?

 
Il problema che Fabiano ha anticipato č mio.
Ho questa struttura:
<DIV ... ID="ppp"><IFRAME NAME="scrollpage" SRC="doc.html" ...> </IFRAME></DIV>
il tutto scritto da un document.write nella pagina (per NN ho risolto giocando 
di fino con "top" e "clip").
Il problema nasce dal fatto che non posso assegnare una costante per l'altezza 
dell'IFRAME, perché il SRC dovrebbe cambiare dinamicamente (script server-
side), ma per quante prove abbia fatto, l'unico risultato ottenuto č l'altezza 
del *documento* che contiene l'IFRAME, non del frame stesso.
Inoltre, ma forse sbaglio qualcosa, se faccio 
document.frames.scrollpage.scrollBy(0,20) invece di scrollare di 20 px in 
verticale si sposta subito alla fine del frame e... non si muove piů, ecco 
perché mi serve l'altezza, mi consente di usare scrollTo, ma devo sapere quando 
fermare l'incremento della variabile di posizione.
Sono io a chiedere l'urgenza stavolta, con il DHTML gioco da non piů di 3 
settimane, e neanche la dHTML.js (fly sei in ascolto?) mi ha aiutato.
Preciso che sto provando sotto IE4 (ho solo quello a casa), ma dovrebbe 
funzionare anche su IE5+, mentre NN6 non ci interessa.
Grazie.
-- 
Ciao, Riccardo
------------------------------------------------------------------------
WebMaster: ----> 
http://www.jsdir.com
 <---- (aka 
http://www.jspoint.it
)
------------------------------------------------------------------------
               Nessun traguardo č abbastanza lontano.
------------------------------------------------------------------------

 
Non ancora......
-- 
Ciao, Riccardo
------------------------------------------------------------------------
WebMaster: ----> 
http://www.jsdir.com
 <---- (aka 
http://www.jspoint.it
)
------------------------------------------------------------------------
               Nessun traguardo è abbastanza lontano.
------------------------------------------------------------------------

Non ancora......
non dell' iframe del document contenuto
frames[0].document.body.scrollHeigth
<HTML>
<HEAD><SCRIPT language=javascript>
function dimensiona(){alert(frames[0].document.body.scrollHeight)}
</SCRIPT>
</HEAD>
<BODY onload=dimensiona()><input type=button onclick='nome();return
false'>
<DIV ID="ppp"><IFRAME  NAME="scrollpage" SRC="doc.htm" >
</IFRAME></DIV>
</BODY>
</HTML>

l'IFRAME, non del frame stesso. 
prova con un OBJECT type="text/html"
dovrebbe funzionare grosso modo alla stessa maniera, col vantaggio di 
essere un block level element SEMPRE e COMUNQUE
-- 
-----BEGIN GEEK CODE BLOCK-----
Version 3.1 (with proprietary extensions)
Comments: waiting for version 4.0 ;)
GE/M/S/O d- s:--- !a C++++()>$ UL P+>+++ L+>++ e w++>$ N++ o-- K- W++ O? 
M? V? PS++ PE- Y+>+++ PGP++ t+ 5? X++(+) R tv--  b++>++++ DI++ D++ G-- e 
h! !r xy**
------END GEEK CODE BLOCK------

:
aggiungo: il document non è accessibile direttamente, così come nessuna 
delle proprietà
dovrai usare document.all("idDellaTagObject").object.document
se hai mai programmato in VB, la tag object è grosso modo l'equivalente 
della classe Extender (funzionano praticamente allo stesso modo)


>Il problema che Fabiano ha anticipato è mio.
Non ho capito bene il tuo problema, Fabiano ha detto che serve l'altezza del
documento dentro il frame, invece tu mi pare che vuoi l'altezza
dell'IFRAME... cmq ti do qualche tip:
Altezza del documento contenuto nel frame
frames[x].document.body.scrollHeight
Altezza del frame:
document.all.tags("IFRAME").item(0).offsetHeight
Altezza area client del frame:
frames[x].document.body.clientHeight
Tieni conto che cmq i valori dovrebbero essere letti dopo onLoad...
Spero ti possa essere d'aiuto...
Bye
FontN



Correggetemi se sbaglio, ma comunque IFRAME 
a )non accetta di essere di essere ri_dimensionato via script
b) non accetta neppure di essere dimensionato tramite un parametro via
script letto nello stream della pagina (ipotesi di riscrittura essendo
venuti a conoscenza dell' altezza del documento da ospitare tramite il
primo passo che hai proposto e che avevo indicato anch'io in un
messaggio senza rilancio)
c) l' iframe contenuto viene letto nel DOM in modo imperfetto.
gli si puo' accedere come oggetto frames[x] (solo IE, NN6 non lo vede
cosi) ma, come nell'esempio originale, proposto come childNode di DIV
viene si indicato tra i childNodes di questo, ma il tree relativo non
continua e la ricerca interna non da' il risultato atteso e riporta il
document della window di primo livello.
Tutto sommato era forse meglio l' impostazione di NN4 che ammetteva il
src anche per i div...
Saluti

contenuto dell'IFRAME stesso.
quello che volevo rimarcare e' che seguendo il DOM tree
(la stringa seguente e' riferita a una pagina contenente semplicemente
un DIV a sua volta contenente IFRAME con un src a pagina esterna
regolarmente visualizzata)
window.document.body.childNodes[0].childNodes[0].canHaveChildren
------------------------------------div-------------------|
------------------------------------------------------------|--iframe----------|
 risulta essere 'false.'
Il che mi va anche bene anche se pensavo, adesso lo so
erroneamente, che la condizione 'inline' si riverberasse anche nel DOM
consentenedone l'inserimento nel relativo tree.
tutto qua.
Ciao

 ha scritto nel messaggio
news:MPG.14e234505...@news.libero.it...

[]
Se ho capito la questione, si dovrebbe risolvere facendo lo scroll o
ottenendo le misure dopo che la pagina nell'iframe e' completamente
caricata.
Se possibile, con un evento onLoad sulla pagina interna
"onload=top.misure" altrimenti chiamando la funzione con un ritardo
ragionevole setTimeout('misure()',1000).
La seguente funzione ridimensiona l'ilayer (referenze) con le misure
della pagina contenuta:
-------------------
function misure(){
document.all.referenze.height=window.referenze.document.body.scrollHeigh
t+20;
document.all.referenze.width=window.referenze.document.body.scrollWidth+
20;
}
------------------
sostituendo i comandi con "window.referenze.scrollBy(0,20)" o
"document.frames.referenze.scrollBy(0,10)"
fa normalmente lo scroll.
Saluti, Paolo

 
Grazie a tutti, ho risolto con una delle solite geniate di Fabiano:
La struttura è quella che vi avevo già detto:
<DIV ...><IFRAME NAME="scrollframe" SRC="qualcosa.html"></IFRAME></DIV>
Fabiano mi ha suggerito: "perché non metti un DIV anche dentro il documento 
"pagina.html" che racchiuda il contenuto del body":
pagina.html è così:
<HTML>
<BODY...>
<DIV ID="pippo" STYLE="position:absolute">
...
...
</DIV>
</BODY>
</HTML>
Lo STYLE sembra necessario.
Dal documento contenente l'IFRAME per leggere l'altezza del documento da 
scrollare faccio:
document.frames.scrollframe.document.all.ppp.clientHeight
Alla lunga il DIV esterno non entra nel gioco e non influisce, solo che a me 
serve per posizionare l'IFRAME.
--------------------------------
Ancora grazie a tutti, se potrò farlo posterò nel NG l'indirizzo del sito cui 
sto facendo la sezione JavaScript/DHTML, non per fare pubblicità a loro (che 
son maestri in questo e non ne hanno bisogno... e non dico altro! :-), ma per 
fare pubblcità a me!
-- 
Ciao, Riccardo
------------------------------------------------------------------------
WebMaster: ----> 
http://www.jsdir.com
 <---- (aka 
http://www.jspoint.it
)
------------------------------------------------------------------------
               Nessun traguardo è abbastanza lontano.
------------------------------------------------------------------------