
这个就是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 文件内容一样高等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)