用iFrame Resizer解決iframe高度自適應問題


最近工作中需要對一個舊項目進行改造,不得已使用了讓人頭疼的iframe,碰到的最大問題是沒有好的方法使其高度自適應。Google一番之后,發現iframe-resizer能夠比較好的解決這個問題,而且還支持跨域訪問(使用postMessage)。

在使用它之前,必須明確iframe resizer要求IE8+(firefox,chrome等自然沒有問題),如果你需要支持舊版本IE,請關掉本頁然后再去google。其次,iframe resizer提供了原生JS與jQuery插件兩種調用方式,而原生方式需要額外的配置,所以我推薦選擇jQuery插件方式(畢竟jQuery幾乎是標配了)。


OK,下載iframe resizer。

在iframe resizer壓縮包的js文件夾中,有兩個文件: 第一個js是:iframeResizer.min.js。這個js是要放在需要嵌入iframe的頁面(parent)中,其調用方式如下(一般情況下你不需要傳遞任何參數即可實現高度自適應,詳細參數請參考官網):

$('iframe').iFrameResize([{log: true}]);

第二個js是:iframeResizer.contentWindow.min.js,它需要放到你的iframe頁面(child)中去,注意只要引人,不需要代碼配置。


接下來是設置iframe,需要注意的是width必須是百分比,scrolling設置為no(為了兼容性)。

<iframe src="http://jarontai.github.io/blog/2014/07/25/use-iframe-resizer/"http://yourserver.com/index.html" width="100%" scrolling="no"></iframe>

當然,你也可以使用document.createElement來動態創建它。

var iframe = document.createElement('iframe'); iframe.setAttribute('src', 'http://yourserver.com/index.html'); iframe.setAttribute('width', '100%'); iframe.setAttribute('scrolling', 'no'); document.body.appendChild(iframe);

按照以上步驟設置,基本上就能夠解決iframe自適應問題,且iframe內容可跨域。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM