2012-04-18 10 views
5

Ich versuche, die Fensterbreite auf Orientierungsänderung für Android-Geräte mit jquery Funktion $(window).outerWidth(true); zu berechnen. Diese Berechnung ergibt die richtige Breite für die Orientierungsänderung sowohl für iphone als auch für ipad, nicht jedoch für android. Wenn ich die Seite zum ersten Mal im Querformat oder im Hochformat lade, bekomme ich die richtige Breite, aber sobald ich die Ausrichtung nach dem Laden der Seite ändere, bekomme ich die Breite für den Hochformat-Modus wie im Querformat und umgekehrt. Bitte schlagen Sie vor, was passiert, und wie kann ich mit diesem Problem umgehen, so dass ich die richtige Fensterbreite auf Orientierungsänderung in Android-GerätWie bekomme ich die richtige Fensterbreite auf Orientierungsänderung für Android-Geräte sowohl Tablets und Handys

+1

Es gibt ein Problem in Android, wo es manchmal ein paar Sekunden dauert, bis sich die Nummern ändern. Ich bin nicht vertraut mit der Plattform, die Sie verwenden, aber in C++ ist die Lösung, nach einer Orientierungsänderung für einige Frames wiederholt abzufragen. – bitwise

Antwort

8

Warum nicht einfach das Javascript screen Objekt verwenden. Sie sollten die Bildschirmabmessungen zu erhalten mit der Lage sein:

screen.height; 
screen.width; 
+0

Ich benutze '$ (window) .outerWidth (true);' als eine allgemeine für alle Geräte einschließlich Desktop, weil ich auch die Größe des Browsers überprüfen muss. Wenn ich die oben genannte Methode benutze, müsste ich speziell nach Android-Geräten suchen. Wird immer noch Ihre Antwort überprüfen, aber warum die JQuery-Funktion nicht das richtige Ergebnis liefert. Was passiert bei Android-Geräten? – user850234

+1

Dies wird den falschen Wert auf Android 2.3 zurückgeben. –

+0

das ist, warum ich hasse Android – neaumusic

0

Versuchen window.innerWidth bzw. window.innerHeight; Es ist möglich, dass Android nicht über äußere Breite und Höhe;

4

ich auch in diesem Problem stecken geblieben war und die beste Lösung zu finden, die auf funktionieren alle platforms.Below ist die Code des 'orientationchange' Ereignisses.

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

Hoffe, es wird dir und den meisten anderen auch helfen .. Prost.

+0

Danke, das funktioniert. Aber es wird nicht auf Emulator funktionieren. –

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

Statt hören orientationChange Ereignis können Sie auf Fenster hören die Größe Veranstaltung, wird es sicherstellen, dass window.innerHeight/outerHeight Eigenschaften aktualisiert wurde.

+0

In meinem Fall wird window.innerWidth nicht aktualisiert, nachdem eine Änderung der Ausrichtung das Größenänderungsereignis ausgelöst hat –

Verwandte Themen