3 回答

TA貢獻(xiàn)1830條經(jīng)驗(yàn) 獲得超9個(gè)贊
IFRAME
contentWindow.document.body.scrollHeight
IFRAME
<script type="text/javascript"> function iframeLoaded() { var iFrameID = document.getElementById('idIframe'); if(iFrameID) { // here you can make the height, I delete it first, then I make it again iFrameID.height = ""; iFrameID.height = iFrameID.contentWindow.document.body.scrollHeight + "px"; } }</script>
IFRAME
<iframe id="idIframe" onload="iframeLoaded()" ...
iframeLoaded
IFRAME
IFRAME
parent.iframeLoaded();

TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超3個(gè)贊
<script?type="text/javascript"> ??function?resizeIframe(iframe)?{ ????iframe.height?=?iframe.contentWindow.document.body.scrollHeight?+?"px"; ??}</script>
然后在IFRAME中聲明如下:
<iframe?onload="resizeIframe(this)"?...
有兩個(gè)小改進(jìn):
- 您不需要通過(guò)document.getElementById獲取元素,因?yàn)樵趏nload回調(diào)中已經(jīng)有了它。
- 沒(méi)有必要設(shè)置
如果你要在下一個(gè)聲明中重新分配它。這樣做實(shí)際上會(huì)在處理DOM元素時(shí)產(chǎn)生開(kāi)銷。iframe.height = ""

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超8個(gè)贊
我發(fā)現(xiàn)接受的答案是不夠的,因?yàn)閄幀選項(xiàng):允許-從在Safari或Chrome中不支持..使用不同的方法,在展示來(lái)自Disqus的本醋。這樣做的目的是向父窗口添加一個(gè)事件偵聽(tīng)器,然后在iframe內(nèi)部使用window.postMessage將一個(gè)事件發(fā)送給父窗口,告訴它做一些事情(調(diào)整iframe的大小)。
因此,在父文檔中,添加一個(gè)事件偵聽(tīng)器:
window.addEventListener('message',?function(e)?{ ??var?$iframe?=?jQuery("#myIframe"); ??var?eventName?=?e.data[0]; ??var?data?=?e.data[1]; ??switch(eventName)?{ ????case?'setHeight': ??????$iframe.height(data); ??????break; ??}},?false);
在iframe內(nèi)部,編寫一個(gè)函數(shù)來(lái)發(fā)布消息:
function?resize()?{ ??var?height?=?document.getElementsByTagName("html")[0].scrollHeight; ??window.parent.postMessage(["setHeight",?height],?"*");?}
最后,在iframe內(nèi)部,向body標(biāo)記添加一個(gè)onload,以觸發(fā)調(diào)整大小函數(shù):
<body?onLoad="resize();">
添加回答
舉報(bào)