我有JS,它使用window.open
打开一个新窗口。窗口的大小在传递给打开函数的窗口功能字符串中设置。 下面是字符串在运行时的外观。
width=650,
height=350,
toolbar=no,
directories=no,
status=no,
menubar=no,
scrollbars=yes,
resizable=yes,
modal=yes,
left=321,
top=209
您可以在此处看到高度设置为 350。
在 window.open 调用之后,返回的句柄用于再次将窗口大小调整为 350 的高度。
所以基本上我们有
v_window = window.open(url, name, windowFeatures);
v_window.resizeTo(width, height);
现在,在打开的窗口中,我们有调整窗口大小的javascript。窗口从元数据表中获取大小并调整自身大小。 调整大小计算使用window.outerHeight
和window.innerHeight
。 但看起来它们都返回相同的值 350。为什么会这样? 由于地址栏和窗口标题是可见的,外部高度不应该大于内部高度吗?
我还注意到,如果在父窗口中删除resizeTo
调用,则子窗口中的 outerHeight 和 innerHeight 值是正确的。 调整大小到调用如何更改行为?有线索吗?
这并没有真正的帮助,但我相信你的分析是正确的:Chrome目前在这方面有问题。 如果你想为这个错误加注星标,我已经在 https://crbug.com/823588#c4 中记录了一些事情。