firefox下 iframe 高度自适应问题
2009-01-04 11:59
405 查看
js脚本在不同的浏览器下存在兼容性问题,遇到一个利用iframe引用网页,高度自调整问题。同样在IE下可以通过的脚本在iframe下没有效果。
查找资料得如下代码:
方法一:
var frm = document.getElementById("id_news");
var subWeb = document.frames ? document.frames["name_news"].document : frm.contentDocument;
if(subWeb != null)
{ frm.height = subWeb.body.scrollHeight;}
此代码在父页中调用,但实践中发现在一问题,iframe.height的值总是上一次引用页的值,跟踪调用发现在代码运行没有任何问题,说不清是怎么回事,但可以肯定有时间延迟的问题,修改代码如下:
function TuneHeight()
{
setTimeout("h()",1);
}
function h()
{
var frm = document.getElementById("id_news");
var subWeb = document.frames ? document.frames["name_news"].document : frm.contentDocument;
if(subWeb != null)
{ frm.height = subWeb.body.scrollHeight;}
}
在父页中调用TuneHeight() 问题得解。
方法二:这个比较简单,仰面父页不用动,子页中加入
<script type="text/javascript">
<!--
function iframeAutoFit()
{
try
{
if(window!=parent)
{
var a = parent.document.getElementsByTagName("IFRAME");
for(var i=0; i<a.length; i++) //author:meizz
{
if(a[i].contentWindow==window)
{
var h1=0, h2=0;
a[i].parentNode.style.height = a[i].offsetHeight +"px";
a[i].style.height = "10px";
if(document.documentElement&&document.documentElement.scrollHeight)
{
h1=document.documentElement.scrollHeight;
}
if(document.body) h2=document.body.scrollHeight;
var h=Math.max(h1, h2);
if(document.all) {h += 4;}
if(window.opera) {h += 1;}
a[i].style.height = a[i].parentNode.style.height = h +"px";
}
}
}
}
catch (ex){}
}
if(window.attachEvent)
{
window.attachEvent("onload",iframeAutoFit);
}
else if(window.addEventListener)
{
window.addEventListener('load', iframeAutoFit, false);
}
//-->
</script>
查找资料得如下代码:
方法一:
var frm = document.getElementById("id_news");
var subWeb = document.frames ? document.frames["name_news"].document : frm.contentDocument;
if(subWeb != null)
{ frm.height = subWeb.body.scrollHeight;}
此代码在父页中调用,但实践中发现在一问题,iframe.height的值总是上一次引用页的值,跟踪调用发现在代码运行没有任何问题,说不清是怎么回事,但可以肯定有时间延迟的问题,修改代码如下:
function TuneHeight()
{
setTimeout("h()",1);
}
function h()
{
var frm = document.getElementById("id_news");
var subWeb = document.frames ? document.frames["name_news"].document : frm.contentDocument;
if(subWeb != null)
{ frm.height = subWeb.body.scrollHeight;}
}
在父页中调用TuneHeight() 问题得解。
方法二:这个比较简单,仰面父页不用动,子页中加入
<script type="text/javascript">
<!--
function iframeAutoFit()
{
try
{
if(window!=parent)
{
var a = parent.document.getElementsByTagName("IFRAME");
for(var i=0; i<a.length; i++) //author:meizz
{
if(a[i].contentWindow==window)
{
var h1=0, h2=0;
a[i].parentNode.style.height = a[i].offsetHeight +"px";
a[i].style.height = "10px";
if(document.documentElement&&document.documentElement.scrollHeight)
{
h1=document.documentElement.scrollHeight;
}
if(document.body) h2=document.body.scrollHeight;
var h=Math.max(h1, h2);
if(document.all) {h += 4;}
if(window.opera) {h += 1;}
a[i].style.height = a[i].parentNode.style.height = h +"px";
}
}
}
}
catch (ex){}
}
if(window.attachEvent)
{
window.attachEvent("onload",iframeAutoFit);
}
else if(window.addEventListener)
{
window.addEventListener('load', iframeAutoFit, false);
}
//-->
</script>
相关文章推荐
- 【开发过程问题汇总系列】【iframe自适应高度】兼容 FireFox和IE内核的浏览器
- 解决IE,Firefox,chrome,safari浏览器中iframe显示高度自适应问题
- 解决IE,Firefox,chrome,safari浏览器中iframe显示高度自适应问题
- Iframe高度自适应(兼容IE/Firefox、同域/跨域)
- Iframe高度自适应(兼容IE/Firefox、同域/跨域)
- iframe通信问题及自适应高度
- 网页布局中iframe高度自适应问题总结
- 解决父窗体内Iframe高度自适应问题
- 20110107 学习记录:动态指定iframe的scr属性 & IE和Firefox的js兼容性整理 & iframe自适应高度
- iframe自适应高度完美版解决DOM元素高度变化问题
- 兼容FireFox和IE的iframe自适应高度js函数
- Iframe高度自适应问题[子页面控制父页面高度]
- Iframe高度自适应(兼容IE/Firefox、同域/跨域)
- JS解决iframe之间通信和自适应高度的问题
- 使用jQuery不判断浏览器高度解决iframe自适应高度问题
- 兼容多浏览器的iframe自适应高度(ie8 、谷歌浏览器4.0和 firefox3.5.3)
- iframe之间通信问题及iframe自适应高度问题
- Iframe自适应高度兼容ie,firefox多浏览器
- 兼容多浏览器的iframe高度自适应问题
- iframe自适应高度(简单经典)兼容ie6-ie9 ,firefox,opera,chrome