2010-06-16 27 views
17

İçeriğine göre bir iframe yeniden boyutlandırmaya çalışıyorum (büyütme veya küçültme). Her sayfada bir tıklama yapıldıktan sonra yeniden boyutlandırma yapan bir yöntem çağrılır.iframe chrome/safari'de scrollheight ile yeniden boyutlandırma

Chrome'da iframe'yi daha büyük, ancak daha küçük yapamıyorum. document.body.scrollHeight her zaman en büyük değerdir.

Büyük bir sayfa # iframe.height = '620px' değerini ayarlarsa ve bir kullanıcı daha az içerik kaydırmalı sayfaya giden bir bağlantıyı tıklarsa, azaltma yerine 620 pikselde kalır.

Bunu Chrome/Safari'de kullanmanın uygun yolu nedir?

cevap

21

iframe içindeki belgenin yüksekliğini sormadan önce iframe nesnesinin yüksekliğini "auto" olarak ayarlamanız gerekir. Böyle bir şey:

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

Ve şimdi:

document.body.scrollHeight 

belgenin gerçek yüksekliğini döndürür.

+0

Parlak! Günlerdir bununla kavga ettik! –

+2

Bu konuda başka biri gelirse, benim için ne düzeltmesi Firefox için 'document.body.scrollHeight' ve Chrome için 'document.document.scrollHeight' ve başka bir şey ayarlıyor ... Örneğim, etki alanı için PostMessage kullanıyor 'if (isFirefox) { \t \t \t e.source.postMessage ('height:' + document.body.scrollHeight, e.origin); \t \t \t} başka { \t \t \t \t e.source.postMessage ('yüksekliği:' + document.documentElement.scrollHeight, e.origin); \t \t} – nitsuj

+1

Bu yanıt için teşekkürler, iFrame kitaplığımda yer aldım https://github.com/davidjbradshaw/iframe-resizer –

9

document.documentElement.scrollHeight kullanmayı denediniz mi?

+0

This. Bu çalıştı: D – chadkouse

İlgili konular