在WebView中,js函数window.innerHeight只返回0?

时间:2012-03-08 06:09:37

标签: javascript android webview

我正在Android中开发一个Web应用程序,我使用WebView来播放一些页面。以下是我的html代码,我编写了一个js函数来获取浏览器屏幕高度的高度。

<html>
<head>
<script>
window.onload=function(){
    alert(window.innerHeight);
}
</script>
</head>
<body style="background:black;">
</body>
</html>

我在我的Defy 480 * 800移动设备上测试上面的代码,在WebView中,它只返回0,有时返回其他数字。但在浏览器中,它可以正常工作。

所以我想知道在WebView中获取可用的屏幕高度是否应该知道?


更新:2012.3.13

感谢Demonick,我按照你的建议找到了lazyload.js,我使用setTimeout进行轮询以获得窗口的高度。

希望它可以帮助他人。

<script>
//poll numbers
var pollCount=0;

//get the window Height
var pollWindowHeight=function(){
    //poll the window innerHeight 10s
    if(window.innerHeight==0){
        pollCount+=1;

        if(pollCount<200)   {
            setTimeout(pollWindowHeight,50);
        }else{
            //just stop polling or you can do some others
        }
    }else{
        //use the window.innerHeight to do something...
    }
}
document.addEventListener("DOMContentLoaded",pollWindowHeight, false);
</script>

参考:https://github.com/rgrove/lazyload/

1 个答案:

答案 0 :(得分:1)

尝试将window.innerHeight函数放在document.onready或更高版本中,因为高度可能尚未在onload初始化。