问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

.net iframe 自适应高度JS代码

发布网友 发布时间:2022-05-16 06:02

我来回答

3个回答

懂视网 时间:2022-05-16 10:23

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>


更多Iframe 自适应高度并实时监控高度变化的js代码相关文章请关注PHP中文网!

热心网友 时间:2022-05-16 07:31

var winWidth = 0;
var winHeight = 0;
function findDimensions() // 函数:获取尺寸
{
// 获取窗口宽度
if (window.innerWidth)
winWidth = window.innerWidth;
else if ((document.body) && (document.body.clientWidth))
winWidth = document.body.clientWidth;
// 获取窗口高度
if (window.innerHeight)
winHeight = window.innerHeight;
else if ((document.body) && (document.body.clientHeight))
winHeight = document.body.clientHeight;
// 通过深入 Document 内部对 body 进行检测,获取窗口大小
if (document.documentElement && document.documentElement.clientHeight && document.documentElement.clientWidth) {
winHeight = document.documentElement.clientHeight;
winWidth = document.documentElement.clientWidth;
}
// 结果
var body = document.documentElement.scrollHeight;
var height = winHeight - 140;//窗体高度减去固定的高度
document.getElementById("frmain").style.height = height + "px";//给iframe定义高度,会适应屏幕的大小,并跟随浏览器的最小化与最大化改变。
}
function switchSysBar() {
var src = document.all("frameshow").style.backgroundImage;
var bl = document.all('frmTitle').style.display;
if (bl == "") {
document.all("frameshow").style.background = "url(img/right.png) no-repeat center center";
document.all('frmTitle').style.display = "none"
}
else {
document.all("frameshow").style.background = "url(img/left.png) no-repeat center center";
document.all('frmTitle').style.display = ""
}
}
findDimensions();
// 调用函数,获取数值
window.onresize = findDimensions;
//将此js脚本放到页面的最下边。追问frmain、iframepage 与frmTitle分是个的ID啊啊???

追答直接看前台布局<div id="top" style="height: 70px; ">
<table> 
 div id="content">
<table style="height: 100%;" cellpadding="0" cellspacing="0"><tr>
 <td style="width: 200px; " valign="top" id="frmTitle"> 
<table style="height: 100%;">
<tr> <td style="height: 32px;"></td></tr><tr><td></td></tr></table>
</td><td><table style="height: 100%;"><tr>
<td style="height: 6px;></td></tr><tr><td style="height: 23px; width: 100%; float: left;"><div style="height: 100%; width: 30px; float: left;">
<div id="frameshow" style="height: 100%; width: 20px; float: left;"></div></div>
<div style="float: left; height: 23px;"></div></td> </tr><tr><td>
<asp:Panel ID="txt" runat="server">
<iframe id="frmain" style="width: 100%;" marginwidth="0" marginheight="0" frameborder="0"
src=""></iframe> </asp:Panel></td> </tr></table></td></tr></table> </div>
        <div id="foot" style="height: 30px;"></div>

热心网友 时间:2022-05-16 08:49

把不需要自适应的iframe的高度定死 ,需要自适应的不设置高度,就可以自适应了
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
2023文科男生最吃香的专业 哪些专业好就业 在南京想找上海音乐学院的老师,怎么找? 荔枝核怎么服用-荔枝核煮水一般煮几颗合适 属虎适合什么名字2022年新生儿 有内涵热门名字精选 国内读研好,还是出国读研好 出国读研和国内读研哪个更好 在一个比例中,如果两个外项互为倒数。那么两个内向的什么是一?_百度知 ... 两个外项互为倒数,一个内向是8分之3,另一个内项是多少【怎样求出来... 在一个比例中,两个外向互为倒数,其中一个内项是8,另一个内项是_百度... 在比例中两个外项互为倒数,其中一个内向是2.75,另一个内项是多少_百度... 苹果4的360拍照软件打不开,出现闪退的情况 奥运冠军吴敏霞时尚大片释出,珍珠泪痕妆不染微尘,她的气质有多好? 珍珠妆始于什么朝代? 《大宋宫词》皇后奇葩珍珠妆,还不一样大,有什么寓意? 王者荣耀s12赛季皮肤怎么获得 王者荣耀s12给什么免费皮肤 王者荣耀S12赛季皮肤是什么 S12赛季皮肤是哪个 王者荣耀s12赛季皮肤是谁的 王者荣耀12黄金圣斗士皮肤水瓶座会给墨子吗 王者荣耀s12赛季皮肤是谁的 王者荣耀s12赛季 女孩的名字,姓杨,有代表第二次生命的意思,要单字 起网名,含义是“重新开始” 姓余取一个意思是重新开始的女孩名字 2011年上海市金山区事业单位招聘考试 什么时间啊 请问2014年上海市金山区事业单位考试报名时间是? 上海市金山区事业单位招聘考试复习资料哪有?是免费下载么? 2014年上海市金山区事业单位考试报名时间谁清楚? 金山区教师编制考到底考些什么啊??? 2014年上海市金山区事业单位考试职位表下载 有没有考过金山区教师编制的前辈,或者是2013年第一批考试的,怎么复习的呢? 求iframe自适应高度代码,我是应用在jsp开发上面, node.js请求远程数据,再用ajax向node请求数据 如何使用jsonp实现跨域请求 怎样使用jsonp解决跨域问题 TaskBuilder界面设计支持哪几种布局? 急!急!急!谁知道南阳火车站附近哪里有卖网线的 南阳市用什么网线好些? 在南阳,怎么拉网线? 河南南阳的人拉什么网线好 河南南阳农村拉网线一般需要多少钱 解除河南南阳网通限制路由器 南阳师范学院新生宿舍可以带电脑么?里面有宽带接么?南阳市大么? 一台台式机电脑如何分别在两个房间上网? 南阳哪家宾馆有电脑一百左右的 图片上是南阳地区什么单位?谢谢 郑州市金水区 家用网线选哪一家最合算?包括稳定性、资费、服务。很急!多谢了! 厦门买的随身携带wifi到南阳能用吗 梦见人家抬棺材去葬自已也带白布 javascript中如何实现为字符添加前导零 js input输入不够6位数前面补0