android / javascript - window.innerWidth和window orientationEsvent在正确的时间触发的问题

时间:2011-09-07 22:37:21

标签: javascript jquery android mobile

我试图在方向改变时准确捕捉移动浏览器的窗口高度和宽度,但是(在Android中,我正在测试) - 当方向监听器触发并调用函数来捕获窗口高度时宽度,新尺寸还没有准确反映出来,所以我最终不得不调用任意延迟来让事情记录下来。我该如何处理?这是我的代码:

window.addEventListener(orientationEvent, function() {
    setTimeout("setViewport()", 500);
    //setViewport();
}, false);

function setViewport() { //Called each time orientation changes, including initial orientation
    viewportW = window.innerWidth; //only reports the accurate window size if the function is called on a delay
    viewportH = window.innerHeight;
}

1 个答案:

答案 0 :(得分:0)

改为使用resize事件

window.addEventListener('resize', function() {
    viewportW = window.innerWidth;
    viewportH = window.innerHeight;
}, false);

如果您只想在方向更改时特别更改这些值,可以使用window.matchMedia来验证方向是否也已更改:

var portrait=(window.matchMedia("(orientation: portrait)")?true:false);