outerWidth
和outerHeight
定义了浏览器窗口的尺寸(包括边栏,窗口镶边和窗口[调整边框/句柄])。不幸的是,你不能在IE中获得这些尺寸 - 只有窗口视口尺寸可用(对于我见过的大多数应用程序来说足够好)。又名window.innerWidth
/window.innerHeight
。
jQuery可以为您提供当前窗口视口的尺寸,但不包括其他窗口(例如开启器,儿童等)的尺寸。所以你必须自己编码。这里是一个原油样品:
// get viewport size (without scrolling) of the given window object
function clientSize(win) {
var width, height;
if(win.innerWidth || win.innerHeight) {
width = win.innerWidth;
height = win.innerHeight;
} else {
var doc = win.document;
width = doc.documentElement.clientWidth || doc.body.clientWidth;
height = doc.documentElement.clientHeight || doc.body.clientHeight;
}
return { width:width, height:height }
}
尝试这样的:
var openerSize = clientSize(window.opener);
// now use openerSize.width, openerSize.height
还要注意的是,如果给定的窗口已经从另一个域加载的文件不能读取任何值的(安全措施)。
@crescentfresh感谢您的回答。我实际上已经尝试过在发布这个问题之前使用你提到的方法。问题是,我真的需要外部大小,以便我可以对打开的窗口执行resizeTo(w,h),其中w和h根据比率或开启器大小进行计算。 “resizeTo”讽刺地设置IE和其他浏览器的外部大小。我也尝试了一些使用resizeBy的杂乱负载,不够好。无论如何+1为您的输入:) – 2009-07-17 19:06:54