2012-04-18 17 views
5

jquery işlevi $(window).outerWidth(true); kullanarak android cihazlar için yön değiştirme üzerinde pencere genişliğini hesaplamak çalışıyorum. Bu hesaplama, hem iphone hem de ipad için yönelim değişikliğine doğru genişlik verir, ancak android'de değil. Sayfayı yatay modda veya dikey modda yüklüyorsam, doğru genişliği alıyorum ancak sayfayı yükledikten sonra yön değiştirdikten sonra, yatay modda olduğu gibi dikey modda genişliğini alıyorum veya tam tersi. Neler olduğunu öğrenin ve bu sorunu nasıl halledebilirim ki ben de android cihazda yönelim değiştirmede doğru pencere genişliğini aldımYönlendirmelerde doğru pencere genişliğini nasıl elde edebilirsiniz Android cihazlar hem de tabletler ve cep telefonları için değiştirin

+1

Android'de, sayıların değişmesi için bazen birkaç saniye sürmesi gereken bir sorun var. Kullandığınız platforma aşina değilim, fakat C++ 'da, çözüm bir yönlendirme değişikliğinden sonra birkaç kare için tekrar tekrar sorgulamaktır. – bitwise

cevap

8

Neden javascript screen nesnesini kullanmayın. Birlikte ekran boyutlarını almak gerekir:

screen.height; 
screen.width; 
+0

Masaüstü yeniden boyutlandırmayı kontrol etmem gerektiğinden, masaüstü dahil tüm cihazlar için genel olarak $ (window) .outerWidth (true); 'kullanıyorum. Yukarıdaki yöntemi kullanırsam, özellikle android cihazları kontrol etmem gerekecekti. Cevabınızı hala kontrol edecek ama jQuery işlevi neden doğru sonucu vermiyor. Android cihazlar için ne olur – user850234

+1

Bu Android 2.3'de yanlış bir değer döndürecektir. –

+0

bu yüzden android – neaumusic

1

Bu yazı sizin için uygun olabilir bir çözüm var gibi görünüyor 'orientationchange' olay kodu.

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

Umut, bu sizin ve diğerlerinin çoğunda size yardımcı olacaktır .. Şerefe. Bunun yerine orientationChange olayın dinleme

4

Ben de bu sorunun sıkışmış ve platforms.Below tüm üzerinde çalışacak en iyi çözümü bulmak:

+0

Teşekkürler, Bu çalışır. Ama emülatörde çalışmayacak. –

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

, sen olayı yeniden boyutlandırmak pencereye dinleyebilirsiniz, bu window.innerHeight/outerHeight özellikleri güncellendi var sağlayacağız.

+0

Durumumda window.innerWidth bir yönlendirme değişikliğini tetikledikten sonra yeniden boyutlandırıldı. –