国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

Iframe 自適應高度并實時監控高度變化的js代碼

2019-11-21 01:01:42
字體:
來源:轉載
供稿:網友
google N次 + 百度M次 + 試驗了1605次之后(聽說農藥1605就是實驗了這么多次后出來的),得出下面成果,在IE7及Firefox3里試了下還能湊合著用用!
1、首先給出個Iframe。
復制代碼 代碼如下:

<iframe id="ifrm"
marginheight="0"
marginwidth="0"
height="100"
width="1000"
frameborder="0"
scrolling="no"
src="xxxxx.html">
</iframe>

2、然后看看怎么獲取Iframe中的頁面的高度。
其實最麻煩的就是怎么讓獲取的高度準確,不同的方式不同的瀏覽器中獲取到的值都會不一樣!暈啊~~。參考了多方意見得出以下javascript函數(doc參數為window.document對象):
復制代碼 代碼如下:

function getDocHeight(doc)
{
//在IE中doc.body.scrollHeight的可信度最高
//在Firefox中,doc.height就可以了
var docHei = 0;
var scrollHei;//scrollHeight
var offsetHei;//offsetHeight,包含了邊框的高度
if (doc.height)
{
//Firefox支持此屬性,IE不支持
docHei = doc.height;
}
else if (doc.body)
{
//在IE中,只有body.scrollHeight是與當前頁面的高度一致的,
//其他的跳轉幾次后就會變的混亂,不知道是依照什么取的值!
//似乎跟包含它的窗口的大小變化有關
if(doc.body.offsetHeight) docHei = offsetHei = doc.body.offsetHeight;
if(doc.body.scrollHeight) docHei = scrollHei = doc.body.scrollHeight;
}
else if(doc.documentElement)
{
if(doc.documentElement.offsetHeight) docHei = offsetHei = doc.documentElement.offsetHeight;
if(doc.documentElement.scrollHeight) docHei = scrollHei = doc.documentElement.scrollHeight;
}
/*
docHei = Math.max(scrollHei,offsetHei);//取最大的值,某些情況下可能與實際頁面高度不符!
*/
return docHei;
}

3、最后修改Iframe的高度,并用一個定時器來不間斷檢查它包含的頁面的高度變化。
復制代碼 代碼如下:

function doReSize()
{
var iframeWin = window.frames['ifrm'];
var iframeEl = window.document.getElementById? window.document.getElementById('ifrm'): document.all? document.all['ifrm']: null;
if ( iframeEl && iframeWin )
{
var docHei = getDocHeight(iframeWin.document);
if (docHei != iframeEl.style.height) iframeEl.style.height = docHei + 'px';
}
else if(iframeEl)
{
var docHei = getDocHeight(iframeEl.contentDocument);
if (docHei != iframeEl.style.height) iframeEl.style.height = docHei + 'px';
}
}
function runResizeTask()
{
doReSize();
setTimeout("runResizeTask()",500);//每隔半秒執行一次
}
runResizeTask();

在這里就沒有去考慮被包含的頁面中是否有折疊、隱藏/展現的情況了!
完整js代碼
復制代碼 代碼如下:

<script language="javascript" type="text/javascript">
function getDocHeight(doc){
//在IE中doc.body.scrollHeight的可信度最高
//在Firefox中,doc.height就可以了
var docHei = 0;
var scrollHei;//scrollHeight
var offsetHei;//offsetHeight,包含了邊框的高度

if (doc.height){
//Firefox支持此屬性,IE不支持
docHei = doc.height;
}
else if (doc.body){
//在IE中,只有body.scrollHeight是與當前頁面的高度一致的,
//其他的跳轉幾次后就會變的混亂,不知道是依照什么取的值!
//似乎跟包含它的窗口的大小變化有關
if(doc.body.offsetHeight) docHei = offsetHei = doc.body.offsetHeight;
if(doc.body.scrollHeight) docHei = scrollHei = doc.body.scrollHeight;
}
else if(doc.documentElement){
if(doc.documentElement.offsetHeight) docHei = offsetHei = doc.documentElement.offsetHeight;
if(doc.documentElement.scrollHeight) docHei = scrollHei = doc.documentElement.scrollHeight;
}
/*
docHei = Math.max(scrollHei,offsetHei);//取最大的值,某些情況下可能與實際頁面高度不符!
*/
return docHei;
}
function doReSize(){
var iframeWin = window.frames['Main'];
var iframeEl = window.document.getElementById? window.document.getElementById('Main'): document.all? document.all['Main']: null;
if ( iframeEl && iframeWin ){
var docHei = getDocHeight(iframeWin.document);
if (docHei != iframeEl.style.height) iframeEl.style.height = docHei + 'px';
}
else if(iframeEl){
var docHei = getDocHeight(iframeEl.contentDocument);
if (docHei != iframeEl.style.height) iframeEl.style.height = docHei + 'px';
}
}

function runResizeTask(){
doReSize();
setTimeout("runResizeTask()",1000);//每隔1秒執行一次
}
runResizeTask();
</script>

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 黄石市| 丘北县| 海宁市| 铁岭市| 博兴县| 鹤壁市| 封开县| 莱阳市| 蒙城县| 常熟市| 金阳县| 广河县| 钦州市| 淮滨县| 凤城市| 台南市| 合阳县| 托克逊县| 隆昌县| 蛟河市| 广汉市| 邛崃市| 德清县| 泸定县| 广南县| 南昌县| 祁连县| 井陉县| 和硕县| 海安县| 南丰县| 牟定县| SHOW| 陆河县| 秦皇岛市| 阳原县| 中卫市| 龙岩市| 海口市| 平乐县| 乐昌市|