iframe 子页面加载时的高度问题

iframe 子页面加载时的高度问题,第1张

我用的就是这段了

<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的内容高度等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9483211.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存