orientationchange JQM - Android的值不正确

时间:2012-07-31 22:39:43

标签: android html5 web-applications jquery-mobile

我正在使用JQM并使用:

进行方向更改
$(window).bind('orientationchange', handleOrientationChange);

function handleOrientationChange() {
       var viewportWidth = 0;
           var viewportHeight = 0;

           // calculate map height and width
           if( typeof( window.innerWidth ) == 'number' ) {
               viewportWidth = window.innerWidth;
               viewportHeight = window.innerHeight;
           } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
               viewportWidth = document.documentElement.clientWidth;
               viewportHeight = document.documentElement.clientHeight;
           } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
               viewportWidth = document.body.clientWidth;
               viewportHeight = document.body.clientHeight;
}

在Android中,当调用handle函数时,我会在方向更改之前获取尺寸,而不是之后。在iPhone中,它可以正常工作。 我需要添加0.5 / 1秒的小延迟......

有人知道原因或有更好的解决方案吗?

非常感谢。

1 个答案:

答案 0 :(得分:0)

我成功使用了setTimeout这个想法。只需确保一次只设置一个超时:

var oc_timer;
$(window).bind('orientationchange', function () {
    clearTimeout(oc_timer);
    oc_timer = setTimeout(handleOrientationChange, 500);
});

我认为问题在于,orientationchange事件在Android设备上触发得太快,并且在事件触发时尚未更新视口尺寸。我已经尝试绑定到resize事件,但它也需要超时。