如何在javascript中获取浏览器的正确android可用屏幕高度

时间:2011-10-20 15:37:23

标签: javascript android

我正在开发移动应用程序,我需要为它获得正确的浏览器内部高度。

我目前正在使用

$(window).height()

计算高度。 这在iphone / ipad上运行良好

当我启动时 Galaxy S2运行android 2.3.5

我开始得到一些奇怪的结果......

第一次加载页面并在

上调用$(window).height()
$().ready(function(){...

我得到了正确的结果(无论手机是垂直还是水平)

只要我将手机旋转到水平位置,它就会报告正确的高度

将手机从水平旋转到垂直时会出现问题

电话报告一个完全不正确的身高值

现在我尝试使用这些值来查看是否有任何值是正确的

screen.height   
screen.availHeight  

但结果仍然相同


我正在使用此方法来检测旋转

    var previousOrientation = 0;
var checkOrientation = function(){
    if(window.orientation !== previousOrientation){
        previousOrientation = window.orientation;
        // orientation changed, do your magic here
    }
};

window.addEventListener("resize", checkOrientation, false);
window.addEventListener("orientationchange", checkOrientation, false);

// (optional) Android doesn't always fire orientationChange on 180 degree turns
setInterval(checkOrientation, 2000);

1 个答案:

答案 0 :(得分:7)

Android浏览器中的屏幕尺寸和innerHeight实际上是f.u.b.a.r.特别是与一个错误相结合,有时会导致WebView在关闭键盘时不调整大小。 我发现Android最健全的属性是window.outerHeight。在Android上,它通常会报告屏幕高度减去状态栏高度。但是在iOS上不会这样做,所以你可能需要做一些浏览器嗅探;(