Вопрос по jquery, android, javascript – Как получить правильную ширину окна при изменении ориентации для устройств Android как планшетов, так и мобильных телефонов

5

Я пытаюсь рассчитать ширину окна при изменении ориентации для устройств Android с помощью функции jquery$(window).outerWidth(true);, Этот расчет дает правильную ширину при изменении ориентации для обоихiphone а такжеipad но не в андроиде. Если я первоначально загружаю страницу в альбомном или портретном режиме, я получаю правильную ширину, но как только я меняю ориентацию после загрузки страницы, я получаю ширину для портретного режима, как это было в ландшафтном режиме, и наоборот. Пожалуйста, предложите, что происходит и как я могу решить эту проблему, чтобы получить правильную ширину окна при изменении ориентации на устройстве Android

В Android есть проблема, когда для изменения чисел иногда требуется несколько секунд. Я не знаком с используемой платформой, но в c ++ решение состоит в том, чтобы повторно опросить несколько кадров после изменения ориентации. bitwise

Ваш Ответ

6   ответов
1

orientationchange событие, вы можете слушать окноresize событие, это будет гарантировать, что свойства window.innerHeight / outerHeight были обновлены.

В моем случае window.innerWidth не обновляется после изменения ориентации, запускается событие изменения размера
5

которое будет работать на всех платформах. Ниже приведен код & reg; событие.

function onOrientationChange(event)
{
    setTimeout(function(){
       'Enter you code here';
    },200);
}

Надеюсь, это поможет вам и большинству других тоже. Ура.

Спасибо, это работает. Но он не будет работать на эмуляторе.
0

window.innerWidthсоответственноwindow.innerHeight; Возможно, что Android не имеет отношения к внешней ширине и высоте;

9

screen объект. Вы должны быть в состоянии получить размеры экрана с:

screen.height;
screen.width;
я использую$(window).outerWidth(true); как правило, для всех устройств, включая настольные, потому что мне также нужно проверить размер браузера. Если я использую вышеупомянутый метод, то мне нужно будет специально проверить устройства Android. Все еще проверит ваш ответ, но почему функция jquery не дает правильного результата. Что происходит для устройств Android user850234
Это вернет неправильное значение на Android 2.3.
Я думаю, что более надежный подход может бытьscreen.availWidth а такжеscreen.availHeigh игнорировать панель поиска и браузер
1
                            var isMobile = {
                                Android: function () {
                                    return navigator.userAgent.match(/Android/i);
                                },
                                BlackBerry: function () {
                                    return navigator.userAgent.match(/BlackBerry/i);
                                },
                                iOS: function () {
                                    return navigator.userAgent.match(/iPhone|iPad|iPod/i);
                                },
                                Opera: function () {
                                    return navigator.userAgent.match(/Opera Mini/i);
                                },
                                Windows: function () {
                                    return navigator.userAgent.match(/IEMobile/i);
                                },
                                webOS: function () {
                                    return navigator.userAgent.match(/webOS/i);
                                },
                                any: function () {
                                    return (isMobile.Android() || isMobile.BlackBerry() || isMobile.iOS() || isMobile.Opera() || isMobile.Windows());
                                }
                            };


                            var tell_if_mobile;
                            var mobile_tablet;
                            if (isMobile.any()) {
                                tell_if_mobile = true;
                            } else {
                                tell_if_mobile = false;
                                var windowWidth = window.screen.width < window.outerWidth ?
                                                  window.screen.width : window.outerWidth;
                                tell_if_mobile = windowWidth < 800;
                                mobile_tablet = windowWidth >= 500 ? "Tablet/Phablet Device" : "Desktop View (Mobile)";
                            }

                            var mobile_type;
                            mobile_type = isMobile.Android() ? "Android Device" :
                                          isMobile.BlackBerry() ? "Blackberry Device" :
                                          isMobile.iOS() ? "iOS Device" :
                                          isMobile.Opera() ? "Opera Mobile/Mini" :
                                          isMobile.Windows() ? "IEMobile" :
                                          isMobile.webOS() ? "webOS device" :
                                          tell_if_mobile == true ? mobile_tablet :
                                          "Not a mobile device";
alert(mobile_type); //result
1

что в этом посте есть решение, которое может иметь отношение к вам:

http://forum.jquery.com/topic/orientationchange-event-returns-wrong-values-on-android

Похожие вопросы