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

mhe*_*ers 5 javascript mobile jquery android

我想在方向改变时准确捕捉移动浏览器的窗口高度和宽度,但是(在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;
}
Run Code Online (Sandbox Code Playgroud)

nfr*_*ure 0

使用调整大小事件代替

window.addEventListener('resize', function() {
    viewportW = window.innerWidth;
    viewportH = window.innerHeight;
}, false);
Run Code Online (Sandbox Code Playgroud)

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

var portrait=(window.matchMedia("(orientation: portrait)")?true:false);
Run Code Online (Sandbox Code Playgroud)