0

我有一个页面,我使用另一个页面的 window.open 作为弹出窗口打开;此时,window.open调用为弹出页面指定给定的高度和宽度。

在弹出页面中,我使用window.innerHeightwindow.innerWidth(以及类似的跨浏览器兼容性)检测可用的屏幕尺寸。

window.onload = function() { 
   if (window.innerWidth && window.innerHeight) { 
      ww = window.innerWidth; wh = window.innerHeight; 
   } ` 

如果使用以下方法打开弹出窗口,这有时会失败:

newHeight = 400; 
newWidth = 400; 
window.open("popup.html", "", "height=" + newHeight + ",width=" + newWidth);

我遇到的问题是我有时会遇到高度/宽度检测的时间问题;在某些情况下,返回的高度/宽度不是弹出窗口设置的值,而是一些其他值(它看起来像打开窗口的值)。

似乎window.innerHeight在强制执行弹出窗口的高度/宽度设置之前检测到。

通常,在弹出窗口中,我会检测window.onload函数中的高度和宽度。我相信这可能是一个时间问题,因为如果我添加 30 毫秒的超时延迟,问题就会消失,而延迟更短,问题可能仍然会发生。

问题:在打开的窗口中是否有一个事件可以确保我window.open已应用开瓶器的高度/宽度设置?

4

1 回答 1

1

有时load事件会在真正加载所有内容(例如字体声明)之前触发,尝试...

document.onreadystatechange = function() {
  if (document.readystate === 'complete') {
     var ww = window.innerWidth; 
     var wh = window.innerHeight;
  }
}
于 2012-10-08T09:09:39.480 回答