2010-06-16 19 views
17

Sto provando a ridimensionare (rendere più grande o più piccolo) un iframe basato sul suo contenuto. Dopo un clic su ogni pagina viene chiamato un metodo che esegue il ridimensionamento.ridimensionamento iframe con scorrimento in chrome/safari

In Chrome posso rendere l'iframe più grande, ma non più piccolo. document.body.scrollHeight è sempre il valore più grande.

Quindi se una pagina grande imposta # iframe.height = '620px' e qualcuno fa clic su un collegamento alla pagina con meno contenuto scrollHeight rimarrà a 620px invece di diminuire.

Qual è il modo corretto di gestirlo in Chrome/Safari?

risposta

21

Prima di chiedere l'altezza del documento all'interno dell'iframe, è necessario impostare l'altezza dell'oggetto iframe su "auto". Qualcosa di simile a questo:

objIframe = document.getElementById('theIframeId');  
objIframe.style.height = 'auto'; 

E ora:

document.body.scrollHeight 

restituisce l'altezza effettiva del documento.

+0

Brillante! Combattiamo con questo per giorni! –

+2

Se qualcun altro lo incontra, per me è stato risolto il problema di impostare "document.body.scrollHeight" per Firefox e "document.documentElement.scrollHeight" per Chrome e qualsiasi altra cosa ... Il mio esempio utilizza postMessage per il dominio incrociato 'if (isFirefox) { \t \t \t \t e.source.postMessage ('height:' + document.body.scrollHeight, e.origin); \t \t \t} else { \t \t \t \t e.source.postMessage ('altezza:' + document.documentElement.scrollHeight, e.origin); \t \t \t} ' – nitsuj

+1

Grazie per questa risposta, ho incluso nella mia biblioteca iFrame https://github.com/davidjbradshaw/iframe-resizer –

9

Hai provato a utilizzare document.documentElement.scrollHeight?

+0

Questo. Questo ha funzionato: D – chadkouse

Problemi correlati