1. 程式人生 > >獲取iframe實際高度

獲取iframe實際高度

要解決的問題:iframe初始高度太小。想根據頁面內容,自動撐開

HTML程式碼:

<iframe id="frame-content" scrolling="auto"  src="你的網頁地址" frameborder="0"></iframe>

在iframe同頁面 => JS程式碼:

// iframe自適應會用到
  function calcPageHeight(doc) {
    var cHeight = Math.max(doc.body.clientHeight, doc.documentElement.clientHeight)
    var sHeight = Math.max(doc.body.scrollHeight, doc.documentElement.scrollHeight)
    var height = Math.max(cHeight, sHeight)
    return height
  }

  var ifr = document.getElementById('frame-content')
  ifr.onload = function () {
    var iDoc = ifr.contentDocument || ifr.document || ifr.contentWindow
    var height = calcPageHeight(iDoc);
    ifr.style.height = height + 'px'
  }

注:
1、在使用這種方法之前,需要注意一個跨域的問題,被iframe引入的頁面必須為同域頁面。不然會報錯

2、有時候本地除錯的時候,比如開啟的檔案在瀏覽器開頭為 file:// 瀏覽器也會預設為跨域頁面,這時候只需要自己搭建一個伺服器環境(phpstudy之類的都可以)。就可以了

3、有時候可能需要改變iframe的內容,比如iframe中引入的A頁面,高度為1000px、而B頁面高度只有500px、這時候切換的時候,B頁面即使重新計算了高度,也不會生效,預設繼承了A頁面的1000px、所以在切換頁面的時候,最好就是手動設定一下iframe的高度,在進行計算。


**THE END**