В WebView функция js window.innerHeight просто возвращает 0? - PullRequest
2 голосов
/ 08 марта 2012

Я разрабатываю веб-приложение для Android и использую 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

Спасибо, Демоник, я следую твоему предложению и нахожу 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 Ответ

1 голос
/ 08 марта 2012

Попробуйте вместо этого поставить window.innerHeight в document.onready или более поздней версии, поскольку высота, возможно, еще не была инициализирована в onload.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...