2009-07-17 42 views
0

对于FF和其他非IE浏览器,window.opener.outerWidth/Height给我需要的信息。对IE来说,我仍然处于亏损状态,从IE6到8.我无法使用jquery,因为opener的页面超出了我的控制范围,所以我不能做window.opener。$(window)。这需要开瓶器有jquery“附加”(纠正我,如果我错了)。获取开启器窗口(IE)的窗口大小

我GOOGLE了很多,也搜索了这个网站,仍然找不到一个明确的答案。

要添加: 我真的需要外部大小,以便我可以对打开的窗口执行resizeTo(w,h),其中w和h基于开启器大小的比率进行计算。 “resizeTo”讽刺地设置IE和其他浏览器的外部大小。我也尝试了一些使用resizeBy的杂乱负载,不够好。

回答

3

outerWidthouterHeight定义了浏览器窗口的尺寸(包括边栏,窗口镶边和窗口[调整边框/句柄])。不幸的是,你不能在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 

还要注意的是,如果给定的窗口已经从另一个域加载的文件不能读取任何值的(安全措施)。

+0

@crescentfresh感谢您的回答。我实际上已经尝试过在发布这个问题之前使用你提到的方法。问题是,我真的需要外部大小,以便我可以对打开的窗口执行resizeTo(w,h),其中w和h根据比率或开启器大小进行计算。 “resizeTo”讽刺地设置IE和其他浏览器的外部大小。我也尝试了一些使用resizeBy的杂乱负载,不够好。无论如何+1为您的输入:) – 2009-07-17 19:06:54