请问如何自动设置iframe的高度

[code="javascript"]
$(".workPanel .tabs .tabs-content").append("

");

var iframe = document.getElementsByName("ifram")[0];
try{
var bHeight = iframe.contentWindow.document.body.scrollHeight;
var dHeight = iframe.contentWindow.document.documentElement.scrollHeight;
alert(bHeight+","+dHeight);
var height = Math.max(bHeight, dHeight);
iframe.height = height + 20;
}catch (ex){}
[/code]

请问我这么写有什么问题吗?

css

2个回答

[code="java"]



[/code]
jinnianshilongnian
jinnianshilongnian 客气 没能帮你解决 呵呵
7 年多之前 回复
hebsxl2000
hebsxl2000 还是得谢谢您,我放弃了,我用了个笨办法,我给了个定高,然后不管内容有多少我都加滚动条了,功能倒是ok了,页面就变挺丑,呵呵,没有太多分,刚申请的账号,仍然谢谢您这么耐心的为我解答
7 年多之前 回复
hebsxl2000
hebsxl2000 谢谢你 我搜搜看把 这是个企业级应用,应该比较老了 这个项目,要不也不能用iframe,恶心死我了,我不太懂前台css这些东西,时间比较紧,如果好改 我就改改看把
7 年多之前 回复
jinnianshilongnian
jinnianshilongnian 是互联网项目吗? 还是企业级应用 frameset 就是做布局的. 把一个页面分成N块,你搜一下 缺点就是一屏幕 超出都是滚动条. 前台使用div 分块 然后通过ajax加载块的数据 (和frameset类似) 或者直接table布局 一次性把页面都展示出来 而不是用iframe
7 年多之前 回复
hebsxl2000
hebsxl2000 如果是frameset应该怎么改呢? 需要结构都改吗? 我前后台都管。。快崩溃了,这个真心不懂 很感谢你
7 年多之前 回复
jinnianshilongnian
jinnianshilongnian 你如果做后台直接frameset 得了。 前台的话建议div 包含进来 然后ajax加载其他页面(仅仅包含需要的数据) 而不是iframe
7 年多之前 回复
jinnianshilongnian
jinnianshilongnian 能不用iframe解决吗
7 年多之前 回复
hebsxl2000
hebsxl2000 这是我改的右侧iframe $(".workPanel .tabs .tabs-content").append("<div class='box on' tabhref='"+target+"' ><iframe align='top' id='ifram' name='ifram' frameborder='0' scrolling='auto' src='"+target+"'style='overflow:hidden;overflow-x:hidden;overflow-y:scroll;position:absolute;top:20px;left:0px;right:0px;bottom:0px;' noresize></iframe>"); 如果有height=100% 或者height不设置 ,里面嵌套的日期插件就会移位,除非height弄个定高,日期显示的位置就对了,可外面的右侧iframe又没有滚动条了,郁闷 像您这么改之后,日期插件仍然显示不正确,请问是怎么回事 日期控件多处使用,不能绝对定位
接近 8 年之前 回复
jinnianshilongnian
jinnianshilongnian 还有 想请问一下 iframe可以固定吗 就是固定在页面的某一位置,不随着滚动条移动 绝对定位。
接近 8 年之前 回复
jinnianshilongnian
jinnianshilongnian <div style="position:absolute;top:100px;left:0px;right:0px;bottom:0px;width:100%;height:100%"> <iframe src="http://hao123.com" frameborder="0" style="overflow:hidden;overflow-x:hidden;overflow-y:scroll;height:100%;width:100%;position:absolute;top:0px;left:0px;right:0px;bottom:0px" height="100%" width="100%"></iframe> </div> 你可以再选择div 定位
接近 8 年之前 回复
hebsxl2000
hebsxl2000 还有 想请问一下 iframe可以固定吗 就是固定在页面的某一位置,不随着滚动条移动
接近 8 年之前 回复
jinnianshilongnian
jinnianshilongnian 你的修改 top:0px; left 相对于左边和上边多少
接近 8 年之前 回复
jinnianshilongnian
jinnianshilongnian 这个是绝对定位
接近 8 年之前 回复
jinnianshilongnian
jinnianshilongnian position:absolute;top:0px;left:0px;right:0px;bottom:0px 这个位置造成的
接近 8 年之前 回复
hebsxl2000
hebsxl2000 不好意思 我css不太懂,我应该怎么修改呢 添加的是一个日期插件,页面由3个iframe构成,上面是logo,左面是树节点,右边显示,在右边的iframe里点击某文本框,生成这个日期iframe,我看了下,日期iframe外面的 这个div是动态生成height的 存在问题是: 在ie下都可用,显示位置正确 在safari下,不做修改,弹出的日期iframe,如果在右侧iframe的上面就没问题,如果在页面下面弹出的日期iframe就跑到整个框的下面去了 如果将右侧的iframe设置为定高,日期显示正常,但右侧iframe滚动条消失 如果将右侧的iframe设置为自适应,高度变得特别窄,并且日期仍然显示不正确 请问您知道这是为什么吗?
接近 8 年之前 回复
jinnianshilongnian
jinnianshilongnian <body style="margin:0px;padding:0px;"> <iframe src="http://hao123.com" frameborder="0" style="overflow:hidden;overflow-x:hidden;overflow-y:scroll;height:100%;width:100%;position:absolute;top:0px;left:0px;right:0px;bottom:0px" height="100%" width="100%"></iframe> </body> 稍微修改了一下 在ff上 chrome上都好是 safari 你测试下
接近 8 年之前 回复
hebsxl2000
hebsxl2000 这么写是什么 意思呢? height:100%;width:100% 在safari,ff浏览器兼容吗? 能说的详细点吗 谢谢
接近 8 年之前 回复

你应该 这样写 :在 iframe 添加一个 onload 事件 ,要等他加载完成之后 才注入 ifrrame的高度

[code="java"]function SetWinHeight(obj)
{
var win=obj;
if (document.getElementById)
{
if (win && !window.opera)
{
if (win.contentDocument && win.contentDocument.body.offsetHeight)
win.height = win.contentDocument.body.offsetHeight;
else if(win.Document && win.Document.body.scrollHeight)
win.height = win.Document.body.scrollHeight;
}
}
} [/code]

[code="java"] [/code]

hebsxl2000
hebsxl2000 额 我发现外面控制右侧iframe高度的div ie下好像是定高 safari随着你拉拽浏览器跟着变换
接近 8 年之前 回复
hebsxl2000
hebsxl2000 嗯 是的 是一个日期插件,页面由3个iframe构成,上面是logo,左面是树节点,右边显示,在右边的iframe里点击某文本框,生成这个日期iframe,我看了下,日期iframe外面的 这个div是动态生成height的 还有相同问题,现象是: 在ie下都可用,显示位置正确 在safari下,不做修改,弹出的日期iframe,如果在右侧iframe的上部就没问题,如果在下面弹出的iframe就跑到下面去了 如果将右侧的iframe设置为定高,日期显示正常,但右侧iframe滚动条消失 如果将右侧的iframe设置为自适应,高度变得特别窄,并且日期仍然显示不正确 请问您知道这是为什么吗?
接近 8 年之前 回复
navy0168
navy0168 你这个 iframe 是不是 通过 js 临时加进去的 ,如果是这样 ,可能原因是html 还没完成 document的加载 ,你看下 iframe 得外面 那个 div 是不是也没有 设置高度 ,你也给 div设置下高度试下!
接近 8 年之前 回复
hebsxl2000
hebsxl2000 如果我在新添加的iframe里 把位置定死,那外面就没有滚动条 如果我不设置高度的话,他只显示一小块,比如正常height是1000px 我用了自适应高度之后 给我算出来的高度是150是怎么回事啊?
接近 8 年之前 回复
navy0168
navy0168 你看这里面 有个 非常兼容的 ,可以测试下: http://www.jb51.net/article/15780.htm
接近 8 年之前 回复
hebsxl2000
hebsxl2000 这种方法我也用过,在ie下显示的时候正常,在safari和chrome下 滚动条就消失了 整个一个屏幕无法全部把内容显示全 ,然后右侧滚动条还消失了 是怎么回事
接近 8 年之前 回复
navy0168
navy0168 评论 字符有限制 : 给你一个 地址: http://www.jb51.net/article/15780.htm
接近 8 年之前 回复
navy0168
navy0168 一下这个 兼容性会好些 <iframe width="778" align="center" height="200" id="win" name="win" onload="Javascript:SetWinHeight(this)" frameborder="0" scrolling="no" src="1.htm"></iframe>
接近 8 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐