如何判断子页面iframe的高度

如何判断子页面iframe的高度,第1张

这个就是iframe高度的问题。以下代码可以解决: function iFrameHeight() { var ifm= documentgetElementById("mainweb"); var subWeb = documentframes documentframes["mainweb"]document : ifmcontentDocument; if(ifm != null && sub

你用jq的时候是在页面加载的时候就获取了,并不是点击的时候获取的。时机不对。

$('#btn2')click(function () {

var boxAheight = $("#frame_content")outerHeight(true);

alert(boxAheight);

})

让两边的高度相同,你可以在含有iframe的页面写上一段Script

<script>

function resize(){

var nHeight = frmdocumentbodyclientHeight

var oEle = documentgetElementById("oWnd")

oElestyleheight = nHeight + 'px'

}

</script>

然后,iframe要写成

<iframe id="frm" src="要加载的页面地址" onload="resize()"></iframe>

如此一来,iframe的高度就会随你加载的HTML页面的高度而变化,不会出现滚动条

HTML的frame框架自适应高度的6个方法:

1、可以给它添加一个默认的CSS的min-height值,然后同时使用JavaScript改变高度。常用的兼容代码有:

// documentdomain = "caibaojiancom";

function setIframeHeight(iframe) {

if (iframe) {

var iframeWin = iframecontentWindow || iframecontentDocumentparentWindow;

if (iframeWindocumentbody) {

iframeheight = iframeWindocumentdocumentElementscrollHeight || iframeWindocumentbodyscrollHeight;

}

}

};

windowonload = function () {

setIframeHeight(documentgetElementById('external-frame'));

};

如果在同个顶级域名下,不同子域名之间互通信息,设置documentdomain="域名com"

2、只要修改以上的iframe的ID即可了。或者你可以直接在iframe里面写代码,我们一般为了不污染HTML代码,建议使用上面的代码。

<iframe src="backtophtml" frameborder="0" scrolling="no" id="external-frame" onload="setIframeHeight(this)"></iframe>

3、多个iframe的情况下

<script language="javascript">

//输入你希望根据页面高度自动调整高度的iframe的名称的列表

//用逗号把每个iframe的ID分隔 例如: ["myframe1", "myframe2"],可以只有一个窗体,则不用逗号。

//定义iframe的ID

var iframeids=["test"];

//如果用户的浏览器不支持iframe是否将iframe隐藏 yes 表示隐藏,no表示不隐藏

var iframehide="yes";

function dyniframesize()

{

var dyniframe=new Array()

for (i=0; i<iframeidslength; i++)

{

if (documentgetElementById)

{

//自动调整iframe高度

dyniframe[dyniframelength] = documentgetElementById(iframeids[i]);

if (dyniframe[i] && !windowopera)

{

dyniframe[i]styledisplay="block";

if (dyniframe[i]contentDocument && dyniframe[i]contentDocumentbodyoffsetHeight) //如果用户的浏览器是NetScape

dyniframe[i]height = dyniframe[i]contentDocumentbodyoffsetHeight;

else if (dyniframe[i]Document && dyniframe[i]DocumentbodyscrollHeight) //如果用户的浏览器是IE

dyniframe[i]height = dyniframe[i]DocumentbodyscrollHeight;

}

}

//根据设定的参数来处理不支持iframe的浏览器的显示问题

if ((documentall || documentgetElementById) && iframehide=="no")

{

var tempobj=documentall documentall[iframeids[i]] : documentgetElementById(iframeids[i]);

tempobjstyledisplay="block";

}

}

}

if (windowaddEventListener)

windowaddEventListener("load", dyniframesize, false);

else if (windowattachEvent)

windowattachEvent("onload", dyniframesize);

else

windowonload=dyniframesize;

</script>

4、打开调试运行窗口可以看到运行。·

跨域下的iframe自适应高度

跨域的时候,由于js的同源策略,父页面内的js不能获取到iframe页面的高度。需要一个页面来做代理。

方法如下:假设>

ahtml中包含iframe:

<iframe src=";

5、在chtml中加入如下代码:

<iframe id="c_iframe"  height="0" width="0"  src=";

6、最后,agenthtml中放入一段js:

<script type="text/javascript">

var b_iframe = windowparentparentdocumentgetElementById("Iframe");

var hash_url = windowlocationhash;

if(hash_urlindexOf("#")>=0){

var hash_width = hash_urlsplit("#")[1]split("|")[0]+"px";

var hash_height = hash_urlsplit("#")[1]split("|")[1]+"px";

b_iframestylewidth = hash_width;

b_iframestyleheight = hash_height;

}

</script>

agenthtml从URL中获得宽度值和高度值,并设置iframe的高度和宽度(因为agenthtml在>

你是在哪个位置获取iframe中内容的高度的呢?如果是在父页面的话你的语句没有问题,但必须要在iframe中内容加载完成后再获取,你可以用一个按钮来ALERT一下,或者在onload事件里ALERT一下来显示看看获取有没有问题

<IFRAME onload="alert(thiscontentWindowdocumentbodyscrollHeight)“ src="">></IFRAME>

function getWH(){

var wh = {};

"Height Width"replace(/[^\s]+/g,function(a){

var b = atoLowerCase();

wh[b]=window["inner"concat(a)]||

documentcompatMode ==="CSS1Compat" && documentdocumentElement["client"concat(a)]

|| documentbody["client"concat(a)];

});

return wh;

}

了解两个名词:BackCompat 标准兼容模式关闭(怪异模式)

CSS1Compat 标准兼容模式开启

这个方法为获取页面可视区域的高度,普通情况下,windowinnerHeight 即可获取,如果是正常模式,并且有clientHeight的情况下, documentdocumentElementclientHeight 获取的就是可视区域高度。在怪异模式下,是使用documentbody获取。

function getBodyWH(){

var wh = {};

"Height Width"replace(/[^\s]+/g,function(a){

var b = atoLowerCase();

wh[b]=documentcompatMode ==="CSS1Compat" && documentdocumentElement["scroll"concat(a)]

|| documentbody["scroll"concat(a)];

});

return wh;

}

这个为获取页面的高度,用于iframe的自适应时候获取。

var ss = {};

ssscrollTopFn = function(arg){

var a = navigatoruserAgenttoLowerCase()indexof("webkit");//判断webkit内核

var scrollTop;

if(a>-1||documentcompatMode =="BackCompat"){

thisscrollTopFn =function(arg){

if(typeof arg == 'number'){

documentbodyscrollTop = arg;

}else{

return documentbodyscrollTop;

}

}

}else{

thisscrollTopFn =function(arg){

if(typeof arg == 'number'){

documentdocumentElementscrollTop = arg;

}else{

return documentdocumentElementscrollTop;

}

}

}

return thisscrollTopFnapply(this,arguments);

}

<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高度最低值可以自己修改

以上就是关于如何判断子页面iframe的高度全部的内容,包括:如何判断子页面iframe的高度、jq怎么获取自适应高度的iframe高度的准确数值、我用iframe 加载一个html html 文件高度经常会变,如何使iframe加载的内容高度和html 文件内容一样高等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存