2015年9月27日 星期日

iFrame 自動調整高度

  最近在做職訓班網頁的過程中,又遇到了iframe自動高度的問題,回頭去看自己幾年前的作品,發現當時的解法並不適用目前的個案,所以又上網找了一下,結果前後試了五六種解法,都無法完美的解決我的問題,而且這些解決都是三四年前或更久的年代的解決,新版的瀏灠器己經不支援了。

  最後我自己想到一個解法,也是意外試出來的,原本我是想利用把網頁中的圖片高度找出來,然後把這個高度傳給上一層主頁面的iframe去變更,試了之後竟然成功了,這表示給定值是可以的,但是如果是用document.body.scrollHight之類的語法,似乎很多瀏灠器現在不支援了,於是我在吃了一頓中秋晚餐後,想到了如果把頁面內容包在一個Div中,是不是可行?於是試了一下,發現改成document.getElementById("XXX").clientHeight後,的確是可以正確抓到內容的高度,不過這個方法沒法動態去調整iframe的高度,也就是說視窗有變化時,高度不會變化,不過我這次的個案也用不到動態調整就是了。

  完整語法如下:
<script type="text/javascript">
function reSizeFrame(){
parent.document.getElementById("mainframe").style.height=document.getElementById("ContentWrapper").clientHeight+40+'px';
}
</script>

然後在<body>的地方加上onload="reSizeFrame();"就可以了,你也可以直接在script語法中直接下window.load=reSizeFrame();反正要在內頁的頁面load完畢後才能抓到正確的高度就是了。



沒有留言:

張貼留言