1

我有 JS,它使用window.open. 窗口的大小在传递给 open 函数的 windowFeatures 字符串中设置。这是字符串在运行时的样子。

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.outerHeightwindow.innerHeight。但看起来它们都返回相同的值 350。为什么会这样?由于地址栏和窗口标题可见,outerHeight 不应该大于 innerHeight 吗?

另外我注意到,如果删除resizeTo父窗口中的调用,子窗口中的 outerHeight 和 innerHeight 值是正确的。resizeTo 调用如何改变行为?有什么线索吗?

4

1 回答 1

1

它并没有真正帮助,但我相信您的分析是正确的:Chrome 目前在这方面存在问题。如果您想为该错误加注星标,我已经在https://crbug.com/823588#c4中记录了一些内容。

于 2018-04-28T17:04:40.890 回答