2012-04-18 2 views
5

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

+1

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

ответ

8

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

screen.height; 
screen.width; 
+0

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

+1

Это вернет неправильное значение на Android 2.3. –

+0

вот почему я ненавижу андроид – neaumusic

0

Попробуйте window.innerWidth, соответственно, window.innerHeight; Возможно, что андроид не имеет отношения к outerWidth и Height;

4

Я также застрял в этой проблеме и найти лучшее решение, которое будет работать на всех platforms.Below является код события «changechange».

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

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

+0

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

0
      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

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

+0

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