
我用的就是这段了
<script type="text/javascript">
function SetCwinHeight(obj) {
var cwin = obj;
if (documentgetElementById) {
if (cwin && !windowopera) {
if (cwincontentDocument && cwincontentDocumentbodyoffsetHeight)
cwinheight = cwincontentDocumentbodyoffsetHeight + 20; //FF NS
else if (cwinDocument && cwinDocumentbodyscrollHeight)
cwinheight = cwinDocumentbodyscrollHeight + 10; //IE
}
else {
if (cwincontentWindowdocument && cwincontentWindowdocumentbodyscrollHeight)
cwinheight = cwincontentWindowdocumentbodyscrollHeight; //Opera
}
}
}
</script>
<iframe id="id" name="name" frameborder="0" width="750px" scrolling="no"
onload="SetCwinHeight(this)"></iframe>
你可以自己设置一下 或者放一个什么在iframe当背景
自适应谁的宽高?
<script type="text/javascript">
$(document)ready(function(){
var if_w=$("body")width();
var if_h=$(window)height();
alert(if_w+"---"+if_h)
$("<iframe src='>
那你可以在mainaspx初始化写上这样一句
function screeChange(){
windowparentdocumentgetElementById('rightFrame')rows="50,"+documentbodyscrollHeight+",100";
}
</script>
body里面加上:onload="screeChange()"
注意一定要在body里面或者它的后面初始化,不然获取不到内容高度。
其中documentbodyscrollHeight获取mainaspx页面的实际文本高度,然后赋值给它的父窗体中的rightFrame的row值。。。
另外:<frame src="bottomhtm" id="bottomFrame" name="mainFrame" frameborder="0" scrolling="no" >
这个name值是不是写错鸟。。。。
另外在aspnet编程中。。。建议舍弃frameset 使用irame哈。。
这个就是iframe高度的问题。以下代码可以解决:
<iframe src="defaulthtml" id="mainweb" name="mainweb" width="100%" height="100%" frameborder="0" onLoad="iFrameHeight()" ></iframe>
<script type="text/javascript" language="javascript">
function iFrameHeight() {
var ifm= documentgetElementById("mainweb");
var subWeb = documentframes documentframes["mainweb"]document :
ifmcontentDocument;
if(ifm != null && subWeb != null) {
ifmheight = subWebbodyscrollHeight;
}
}
</script>
为了测试,iframe的height可以预先设置一个固定高度比如:height="200"(也可以使用100%),iframe加载完,会自动调整页面大小。
跨域问题,没法实现
因为你没法获取被包含页面的任何信息,当然包括它的高度。所有尝试都会以“拒绝访问”告终。
不过我不知道你要做的是网站还是单纯在本地跑的html页面,如果是本地html,可以简单地把文件扩展名改为hta就可以解决拒绝访问的问题,接着再获取其页面的高度并设置iframe的高度即可。关于高度的获取,可用“[iframe对象]contentWindowdocumentbodyclientHeight”,反正关键是contentWindow这个对象,有了它,你 *** 作iframe中的页面,就像 *** 作自己的页面一样轻松了。
但如果你做的网页是放到网站上去的,那没办法,浏览器考虑到安全性问题,是不允许某个网页去 *** 作不在同一个域下的页面的。你自己可以测试一下,当iframe的src是不同域下的网址时,获取contentWindow对象就会提示“拒绝访问”的。
<iframe
scrolling="no"
name="aa"
frameborder="0"
src="bbhtml"
onload="thisheight=0;var
fdh=(thisDocumentthisDocumentbodyscrollHeight:thiscontentDocumentbodyoffsetHeight);thisheight=(fdh>700fdh:700)"></iframe>
iframe高度自适应,700为自己设定的iframe高度最低值,高度小于700的将以700显示,大于700将以div自身高度来显示。iframe高度最低值可以自己修改
首先来看看如何通过脚本进行设置。
function ChangeFrameHeight(id) {
var count = 1;
(function() {
var frm = documentgetElementById(id);
var subWeb = documentframes documentframes[id]document : frmcontentDocument;
if (subWeb != null) {
var height = Mathmax(subWebbodyscrollHeight, subWebdocumentElementscrollHeight);
frmheight = height;
}
if (count < 3) {
count = count + 1;
windowsetTimeout(argumentscallee, 2000);
}
})();
}
假设iframe子页面和父页面都在同一域内,通过该脚本可以对给定id的iframe高度进行动态调整。为了防止父页面在子页面之前加载完成,该函数会每隔2秒重新执行一次,一共执行3次。极端情况下子页面的加载速度会慢于父页面,可适当对执行次数和时间做调整。
<iframe frameborder="0" width="450" marginheight="0" marginwidth="0" scrolling="no" id="frm1" name="frm1" src="abchtml" onload="ChangeFrameHeight('frm1')"></iframe>
如果遇到子页面跨域的问题,可通过HTML5的postMessage来实现,但前提是子页面需要主动向父页面发送信息。下面是子页面部分:
<!DOCTYPE html>
<head>
</head>
<body onload="parentpostMessage(documentbodyscrollHeight, '>
以上就是关于iframe 子页面加载时的高度问题全部的内容,包括:iframe 子页面加载时的高度问题、jquery动态创建iframe并自适应宽度和高度、如果iframe的子页面是一个frameset框架文件怎么获取frameset的内容高度等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)