日期:2014-05-18  浏览次数:20449 次

一个关于iframe的问题
情况是这样的,a.aspx页面中有一个iframe,iframe里面有一个datagrid,datagrid的长度会变,我需要iframe能自适应datagrid的高度而改变自身高度,即iframe内不要出现滚动条

------解决方案--------------------
<script type= "text/javascript ">

//more javascript from http://www.smallrain.net

//Input the IDs of the IFRAMES you wish to dynamically resize to match its content height:
//Separate each ID with a comma. Examples: [ "myframe1 ", "myframe2 "] or [ "myframe "] or [] for none:
var iframeids=[ "myframe "]

//Should script hide iframe from browsers that don 't support this script (non IE5+/NS6+ browsers. Recommended):
var iframehide= "yes "

function dyniframesize() {
var dyniframe=new Array()
for (i=0; i <iframeids.length; i++){
if (document.getElementById){ //begin resizing iframe procedure
dyniframe[dyniframe.length] = document.getElementById(iframeids[i]);
if (dyniframe[i] && !window.opera){
dyniframe[i].style.display= "block "
if (dyniframe[i].contentDocument && dyniframe[i].contentDocument.body.offsetHeight) //ns6 syntax
dyniframe[i].height = dyniframe[i].contentDocument.body.offsetHeight;
else if (dyniframe[i].Document && dyniframe[i].Document.body.scrollHeight) //ie5+ syntax
dyniframe[i].height = dyniframe[i].Document.body.scrollHeight;
}
}
//reveal iframe for lower end browsers? (see var above):
if ((document.all || document.getElementById) && iframehide== "no "){
var tempobj=document.all? document.all[iframeids[i]] : document.getElementById(iframeids[i])
tempobj.style.display= "block "
}
}
}

if (window.addEventListener)
window.addEventListener( "load ", dyniframesize, false)
else if (window.attachEvent)
window.attachEvent( "onload ", dyniframesize)
else
window.onload=dyniframesize

</script>


<iframe id= "myframe " src= "../help.htm " scrolling= "no " marginwidth= "0 " marginheight= "0 " frameborder= "0 " vspace= "0 " hspace= "0 " style= "overflow:visible; width:100%; display:none "> </iframe>


------解决方案--------------------
/**********************************************************
在iframe加载时候,自适应高度
**********************************************************/
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;
}
}
}


<iframe src= "inc_home.asp " id= "frmMain " name= "frmMain " width= "99% " height= "100% " frameborder=0 scrolling=no marginHeight=0 marginWidth=0 onload= "Javascript:SetWinHeight(this) " > </iframe>