JS實(shí)現(xiàn)iframe自適應(yīng)高度的方法(兼容IE與FireFox)
本文實(shí)例講述了JS實(shí)現(xiàn)iframe自適應(yīng)高度的方法。分享給大家供大家參考,具體如下:
之前一直被iframe自適應(yīng)高度的問題困擾,很多JS代碼在FF里面似乎就變成啞巴了。后來下面這段代碼終于被我從萬千號(hào)稱兼容FF的代碼堆中翻了出來。我已經(jīng)用過了,真的好用。尤其是對(duì)于我這樣的JS水平較低(真不好意思)的人來說,這段代碼簡(jiǎn)單易懂,方便修改,只要把下面的代碼復(fù)制粘貼到iframe所在頁面的<body>標(biāo)簽里面,并且修改一下ID名就行了(注意,要修改的地方有兩個(gè),位置在代碼中有說明)。
向原創(chuàng)這段代碼的朋友致敬。
步驟1:在<body>標(biāo)簽下先輸入如下JS代碼
<scriptlanguage="javascript">
function adjustFrameSize()
{
var frm = document.getElementById("iframe1"); //將iframe1替換為你的ID名
var subWeb = document.frames ? document.frames["iframe1"].document : frm.contentDocument;
if(frm != null && subWeb !=null)
{
frm.style.height="0px";//初始化一下,否則會(huì)保留大頁面高度
frm.style.height = subWeb.documentElement.scrollHeight+"px";
frm.style.width = subWeb.documentElement.scrollWidth+"px";
subWeb.body.style.overflowX="auto";
subWeb.body.style.overflowY="auto";
}
}
</script>
步驟2:在iframe標(biāo)簽中加上id="iframe1"onload="adjustFrameSize()"
例如:
這段代碼有一個(gè)小小的缺點(diǎn),就是使用后iframe中的內(nèi)容和外邊框(如果存在外邊框的話)的距離有點(diǎn)小,可以自己適當(dāng)調(diào)整一下;另外,除IE6.0以上版本和FF以外沒有測(cè)試過其它瀏覽器,除此之外尚未發(fā)現(xiàn)別的缺陷,如果在使用中發(fā)現(xiàn)了問題或者有更好解決方法的童鞋歡迎來分享一下。
如果在iframe頁面內(nèi)部含有ajax加載的頁面或者通過js動(dòng)態(tài)去添加內(nèi)容導(dǎo)致iframe高度變化的情況,可以添加一下方式進(jìn)行:
1:子頁面添加以下內(nèi)容
//修改父窗口地址
function changeHeight(){
window.top.location.hash = "#height=" + $(document).height();
}
修改dom的部分調(diào)用該方法
2:父頁面添加
//高度自適應(yīng)
var iframe = document.getElementById("iframe1");
function iframeHeight() {
var hash = window.location.hash.slice(1), h;
if (hash && /height=/.test(hash)) {
h = hash.replace("height=", "");
iframe.style.height = h+"px";
window.location.hash = "#temp";//防止點(diǎn)擊其他頁面時(shí)高度不變
}
setTimeout(iframeHeight, 100);
}
iframeHeight();
更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《JavaScript中json操作技巧總結(jié)》、《JavaScript切換特效與技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》、《JavaScript動(dòng)畫特效與技巧匯總》、《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》
希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。
相關(guān)文章
使用JSX實(shí)現(xiàn)Carousel輪播組件的方法(前端組件化)
做這個(gè)輪播圖的組件,我們先從一個(gè)最簡(jiǎn)單的 DOM 操作入手。使用 DOM 操作把整個(gè)輪播圖的功能先實(shí)現(xiàn)出來,然后在一步一步去考慮怎么把它設(shè)計(jì)成一個(gè)組件系統(tǒng)2021-04-04
Web程序員必備的7個(gè)JavaScript函數(shù)
這篇文章主要為大家詳細(xì)介紹了Web程序員必備的7個(gè)JavaScript函數(shù),教會(huì)大家如何靈活運(yùn)用JavaScript函數(shù),感興趣的小伙伴們可以參考一下2016-06-06
js實(shí)現(xiàn)ajax的用戶簡(jiǎn)單登入功能
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)ajax的用戶簡(jiǎn)單登入功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-06-06
才發(fā)現(xiàn)的超鏈接js導(dǎo)致網(wǎng)頁中GIF動(dòng)畫停止的解決方法
才發(fā)現(xiàn)的超鏈接js導(dǎo)致網(wǎng)頁中GIF動(dòng)畫停止的解決方法...2007-11-11
javascript實(shí)現(xiàn)貪吃蛇游戲(娛樂版)
這篇文章主要為大家詳細(xì)介紹了javascript實(shí)現(xiàn)貪吃蛇,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-08-08

