在谷歌浏览器中,window.open的高度与其他浏览器不同

8

我正在使用Javascript的window.open在用户单击时打开一个指定宽度和高度(760x581)的浏览器窗口,在Internet Explorer,Safari和Firefox上正常工作,但是Google Chrome出现问题。在其他浏览器中,高度正确地用作内容的高度,但在Google Chrome中,它使实际的浏览器窗口高度为581像素,而不是内容高度。有没有办法解决这个问题?

<a href="http://domain.com/example.php" onclick="window.open('http://domain.com/example.php', '', 'width=760, height=581, top=15, left=15, toolbar=0, menubar=0, scrollbars=1, resizable=1, copyhistory=0, location=0, directories=0, status=1, titlebar=1, personalbar=0');return false">click here</a>

顺便提一下,“点击这里”几乎从来不是一个好的链接文本。 ;) - Marcel Korpel
哈哈,显然只是一个例子;-) - James Simpson
3个回答

4

我进一步尝试后发现,一些浏览器支持window.open的属性innerHeight,以下代码在所有浏览器中都可以正常工作,并将内容高度设置为775像素,仅在Chrome浏览器中添加了50像素:

window.open($(this).attr('href'), 'videoplayer',
   'width=1242, height=775, innerHeight=825, location=no, menubar=no, status=no, titlebar=no, scrollbars=no'
);

我在Chrome 6.0.472.63,Firefox 3.6、3和2,IE 8 & 7以及Opera 10.62中进行了测试。当我只使用height时,Chrome会短50px并出现滚动条,但以上所有浏览器都正常。添加innerHeight属性后,将其设置为比我想要的高度多50px,在Chrome以及所有其他浏览器中都可以正常工作。
更新:看起来这会在Safari中创建一个问题,增加了50px的高度。将寻找解决方法。

2
最近使用Chrome 14+测试了一下,似乎这个问题已经不存在了。 - donut

1
问题仍然存在(Chrome17+),如果您使用height=600调用window.open,则结果窗口的innerheight为564px,比实际高度短36px(因为Windows上有标题栏)。标题栏高度取决于平台,因此这非常令人恼火。
我的解决方案只是将差异添加到高度中。

0

从我在谷歌上搜寻了一个多小时后得到的结论是,这只是谷歌浏览器的工作方式,我们必须使用解决方法。目前我正在执行的方法是,在我所打开的页面中加入以下JS代码,直到找到更好的方法:

if (navigator.appVersion.indexOf('Chrome')>0) {
    window.resizeBy(0, 581 - window.innerHeight);
}

感谢您提供的解决方案。看起来至少在Mac上,Chrome会将高度增加50像素。不知道在其他平台上是否有所不同。当其他浏览器都能正常工作时,这真的很烦人。让我想知道这是一个bug还是在使用window.open时需要设置其他选项。 - donut

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接