检测window.innerHeight的计时问题

时间:2012-10-08 09:02:50

标签: javascript

我有一个页面,我在另一个页面中使用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的高度/宽度设置?

1 个答案:

答案 0 :(得分:1)

有时在真正加载所有内容之前load事件会触发(例如font-face声明),请尝试使用...

document.onreadystatechange = function() {
  if (document.readystate === 'complete') {
     var ww = window.innerWidth; 
     var wh = window.innerHeight;
  }
}