日期:2014-05-16  浏览次数:20507 次

window.parent和window.opener区别 及iframe自适应高度及js offsetheight和scrollheight的区别
下面一段代码是关于window.parent和window.opener区别 来讲的,我们如果要用到iframe的值传到另一框架就要用到window.opener.document.getElementById(name).value = uvalue;这种形式哦。
window.parent能获取一个框架的父窗口或父框架。顶层窗口的parent引用的是它本身。
可以用这一点特性来判断这个窗口是否是顶层窗口。如:
Code
function IsTopWindow( win )
{
    if( win.parent == win ) return true;
    else return false;
}
window.opener引用的是window.open打开的页面的父页面。

opener即谁打开我的,比如A页面利用window.open弹出了B页面窗口,那么A页面所在窗口就是B页面的opener,在B页面通过opener对象可以访问A页面。 
parent表示父窗口,比如一个A页面利用iframe或frame调用B页面,那么A页面所在窗口就是B页面的parent。 
在JS中,window.opener只是对弹出窗口的母窗口的一个引用。比如:
a.html中,通过点击按钮等方式window.open出一个新的窗口b.html。那么在b.html中,就可以通过window.opener(省略写为opener)来引用a.html,包括a.html的document等对象,操作a.html的内容。假如这个引用失败,那么将返回null。所以在调用opener的对象前,要先判断对象是否为null,否则会出现“对象为空或者不存在”的JS错误。
window.opener 返回的是创建当前窗口的那个窗口的引用,比如点击了a.htm上的一个链接而打开了b.htm,然后我们打算在b.htm上输入一个值然后赋予a.htm上的一个id为“name”的textbox中,就可以写为:
window.opener.document.getElementById("name").value = "输入的数据";


【转载地址】http://www.111cn.net/wy/99/f046d20386b748218a96b0a3bfc45f3b.htm







function setPIH()
{
//** iframe自动适应页面 **//
//定义iframe的ID
var iframeids=["ifr"]
//alert(iframeids.length);
//如果用户的浏览器不支持iframe是否将iframe隐藏 yes 表示隐藏,no表示不隐藏
var iframehide="yes"
var dyniframe=new Array()
for (i=0; i<iframeids.length; i++)
{
if (parent.document.getElementById)
{
//自动调整iframe高度
dyniframe[dyniframe.length] = parent.document.getElementById(iframeids[i]);
if (dyniframe[i] && !parent.window.opera)
{
dyniframe[i].style.display="block"
if (dyniframe[i].contentDocument && dyniframe[i].contentDocument.body.offsetHeight) //如果用户的浏览器是NetScape
dyniframe[i].height = dyniframe[i].contentDocument.body.offsetHeight +10;
else if (dyniframe[i].Document && dyniframe[i].Document.body.scrollHeight) //如果用户的浏览器是IE
dyniframe[i].height = dyniframe[i].Document.body.scrollHeight +19;
}
//alert(dyniframe[i].height );
}
//根据设定的参数来处理不支持iframe的浏览器的显示问题
if ((parent.document.all || parent.document.getElementById) && iframehide=="no")
{
var tempobj=parent.document.all? parent.document.all[iframeids[i]] : parent.document.getElementById(iframeids[i])
tempobj.style.display="block"
}
}
}
今天原来FF和IE用的都是高度加5,经测试,ie有body上边距,FF也有,网上有一文章说ie是10,FF是8,也就是说两者差2,但我用PS测量出来的结果是两者差了8-9像素,获取到的高度比实际的火狐是差了10,IE是19,于是在上面加上了,如果这俩不单独处理IE的iframe如果选中文字会有滚动,而FF直接是不显示超过高度的部分,
我可能解释的不清楚,但不大好说明白。。关于js offsetheight和scrollheight的区别如下:
JS 关于浏览器之间 scrollHeight offsetHeight (比如 iframe自适应高度时...)
2009-06-06 19:35

关于clientHeight、offsetHeight、scrollHeight

window.screen.availWidth     返回当前屏幕宽度(空白空间) 
window.screen.availHeight     返回当前屏幕高度(空白空间) 
window.screen.width     返回当前屏幕宽度(分辨率值) 
window.screen.height     返回当前屏幕高度(分辨率值) 
window.document.body.offsetHeight;     返回当前网页高度 
window.document.body.offsetWidth;     返回当前网页宽度 

我们这里说说四种浏览器对 document.body 的 clientHeight、offsetHeight 和 scrollHeight 的解释。

这四种浏览器分别为IE(Internet Explorer)、NS(Netscape)、Opera、FF(FireFox)。

clientHeight
大家对 clientHeight 都没有什么异议,都认为是内容可视区域的高度,也就是说页面浏览器中可以看到内容的这个区域的高度,一般是最后一个工具条以下到状态栏以上的这个区域,与页面内容无关。

offsetHeight
IE、Opera 认为 offsetHeight = clientHeight + 滚动条 + 边框。
NS、FF 认为 offsetHeight 是网页内容实际高度,可以小于 clientHeight。

scrollHeight
IE、Opera 认为 scrollHeight 是网页内容实际高度,可以小于 clientHeight。
NS、FF 认为 scrollHeight 是网页内容高度,不过最小值是 clientHeight。

简单地说
clientHeight 就是透过浏览器看内容的这个区域高度。
NS、FF 认为 offsetHeight 和 scrollHeight 都是网页内容高度,只不过当网页内容高度小于等于 clientHeight 时,scrollHeight 的值是 clientHeight,而 off