android / javascript - проблема с window.innerWidth и ориентацией окна. Запуск событий в нужное время - PullRequest
5 голосов
/ 08 сентября 2011

Я пытаюсь точно зафиксировать высоту и ширину окна мобильного браузера при изменении ориентации, но (в 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;
}

1 Ответ

0 голосов
/ 18 ноября 2012

Вместо этого используйте событие изменения размера

window.addEventListener('resize', function() {
    viewportW = window.innerWidth;
    viewportH = window.innerHeight;
}, false);

Если вы хотите особенно изменить эти значения только при изменении ориентации, вы можете использовать window.matchMedia, чтобы проверить, что ориентация также изменилась:

var portrait=(window.matchMedia("(orientation: portrait)")?true:false);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...