通過js實現iframe 自適應高度,實際上就是設置iframe的高度,設置等于內嵌網頁的高度,從而看不到滾動條和嵌套痕跡。對于用戶體驗和網站美觀起著重要作用。我們可以通過css來給它直接定義一個高度,同樣可以實現上面的需求。當內容是未知或者是變化的時候。
iframe 自適應高度如說是始終都調用同一個固定高度的頁面,我們直接寫iframe高度就可以了。而如果iframe要切換頁面,或者被包含頁面要做DOM動態操作,這時候,就需要程序去同步iframe高度和被包含頁的實際高度了。
iframe 自適應高度也就是說基于界面美觀和交互的考慮,很好的隱藏了iframe的border和scrollbar,讓人看不出它是個iframe。那么iframe 自適應高度方法有哪些呢?下面就來簡單介紹一下。
子頁面不用設置,父頁面示例代碼:
<script type="text/javascript">
var browserVersion = window.navigator.userAgent.toUpperCase();
var isOpera = browserVersion.indexOf("OPERA") > -1 ? true : false;
var isFireFox = browserVersion.indexOf("FIREFOX") > -1 ? true : false;
var isChrome = browserVersion.indexOf("CHROME") > -1 ? true : false;
var isSafari = browserVersion.indexOf("SAFARI") > -1 ? true : false;
var isIE = !!window.ActiveXObject || "ActiveXObject" in window;
var isIE9More = !-[1] == false;
function reinitIframe(iframeId, minHeight) {
try {
var iframe = document.getElementById(iframeId);
var bHeight = 0;
if (isChrome == false && isSafari == false)
bHeight = iframe.contentWindow.document.body.scrollHeight;
var dHeight = 0;
if (isFireFox == true)
dHeight = iframe.contentWindow.document.documentElement.offsetHeight + 2;
else if (isIE == false && isOpera == false)
dHeight = iframe.contentWindow.document.documentElement.scrollHeight;
else if (isIE == true && isIE9More) {
//ie9+
var heightDeviation =
bHeight - eval("window.IE9MoreRealHeight" + iframeId);
if (heightDeviation == 0) {
bHeight += 3;
} else if (heightDeviation != 3) {
eval("window.IE9MoreRealHeight" + iframeId + "=" + bHeight);
bHeight += 3;
}
} //ie[6-8]、OPERA
else bHeight += 3;
var height = Math.max(bHeight, dHeight);
if (height < minHeight) height = minHeight;
iframe.style.height = height + "px";
} catch (ex) {}
}
function startInit(iframeId, minHeight) {
eval("window.IE9MoreRealHeight" + iframeId + "=0");
window.setInterval("reinitIframe('" + iframeId + "'," + minHeight + ")", 100);
}
</script>
<script type="text/javascript">
startInit('gbook', 0);
</script>
<iframe style="width:100%;background:transparent;" src="gbook001.html" id="gbook" name="gbook" allowtransparency="true" frameborder="0" scrolling="no"></iframe>以上iframe高度自適應終極方案,兼容所有瀏覽器!