2012-06-01 3 views
8

Ich bin mir sicher, ich habe gerade diese Frage übersehen, aber ich kann nicht finden, wie man das Gerät überprüft.
Ich möchte überprüfen, ob das Gerät entweder ein Telefon, ein Tablet im Querformat, ein Tablet im Hochformat oder ein anderes Gerät (Computer) ist.Gerät check in sencha touch 2

Was ich habe, ist dies:

if (Ext.platform.isPhone) { 
    console.log("phone"); 
} 

if (Ext.platform.isTablet) { 
    console.log("tablet"); 
} 

var x = Ext.platform; 

Aber Plattform ist nicht definiert (wahrscheinlich, weil dies der Weg von Sencha Touch 1).

Kennt jemand den richtigen Platz für mich, um auf den Gerätecheck zuzugreifen?

Antwort

18

Sencha Environment Detection bietet ein großes Spektrum mit einfachen Mitteln.

Statt Ext.os.is.Tablet, können Sie das Leben leichter über Ext.os.deviceType machen, die zurückkehren wird:

  • Telefon
  • Tablet
  • Desktop-

Hinweis: Dieser Wert kann auch durch Hinzufügen von "? DeviceType =" zur URL verfälscht werden.

http://localhost/mypage.html?deviceType=Tablet 

Ext.os.Name ist die Singleton Rückkehr:

  • iOS
  • Android
  • webOS
  • Blackberry
  • RIMTablet
  • MacOS
  • Windows-
  • Linux
  • Bada
  • Andere

Die übliche Fähigkeit der Browser-Erkennung durch Ext.browser.name zur Verfügung steht.

Etwas, das ich erst kürzlich kennengelernt habe, das ich liebe, ist Feature-Erkennung - Codierung ähnlich wie Modernizr/YepNope basierend auf Fähigkeit des Geräts zu ermöglichen. Ext.feature Angebote:

  • Ext.feature.has.Audio
  • Ext.feature.has.Canvas
  • Ext.feature.has.ClassList
  • Ext.feature.has.CreateContextualFragment
  • Ext.feature.has.Css3dTransforms
  • Ext.feature.has.CssAnimations
  • Ext.feature.has.CssTransforms
  • Ext.feature.has.CssTransitions
  • Ext.feature.has.DeviceMotion
  • Ext.feature.has.Geolocation
  • Ext.feature.has.History
  • Ext.feature.has.Orientation
  • Ext.feature.has.OrientationChange
  • Ext.feature.has.Range
  • Ext.feature.has.SqlDatabase
  • Ext.feature.has.Svg
  • Ext.feature.has.Touch
  • Ext.feature.has.Video
  • Ext.feature.has.Vml
  • Ext.feature.has.WebSockets

Vollbild/app erkennen/Homescreen Browser-Modus auf iOS:

window.navigator.standalone == true 

Orientierung Ext.device.Orientation und Orientierungsänderung:

Ext.device.Orientation.on({ 
    scope: this, 
    orientationchange: function(e) { 
     console.log('Alpha: ', e.alpha); 
     console.log('Beta: ', e.beta); 
     console.log('Gamma: ', e.gamma); 
    } 
}); 

Die Ausrichtung basiert auf Viewport.Normalerweise füge ich einen Listener, der zuverlässiger ist:

4

Verwenden Sie Ext.env.OS'sis() Methode.

Beachten Sie, dass nur Hauptkomponente und vereinfacht Wert der Version verfügbar über direkte Immobilienprüfung ist. Unterstützte Werte sind: iOS, iPad, iPhone, iPod, Android, WebOS, Blackberry, Bada, MacOS, Windows Linux und andere

if (Ext.os.is('Android')) { ... } 
if (Ext.os.is.Android2) { ... } // Equivalent to (Ext.os.is.Android && Ext.os.version.equals(2)) 

if (Ext.os.is.iOS32) { ... } // Equivalent to (Ext.os.is.iOS && Ext.os.version.equals(3.2)) 

Alternativ können Sie auch PhoneGap Device API

verwenden
+0

Ich habe diesen Weg gesehen, aber das Problem damit ist, dass ich auch angeben möchte, ob das Gerät ein mobiles Gerät oder ein Tablet ist. Android kann zum Beispiel auf einem Tablet oder einem mobilen Gerät laufen. –

2

Ich fand die Antwort darauf:

Was scheint der Fall zu sein ist, dass Ext.os.is. (Tablet/Telefon oder etwas anderes) ist wahr oder undefiniert. Wenn dies nicht der Fall ist, wird es undefiniert sein. I.a. Ext.os.is.Tablet ist wahr, wenn auf einem Tablet und nicht definiert, wenn nicht.

Das also ist die Antwort, die ich suchte

if(Ext.os.is.Tablet){ 
     this._bIsTablet = true; 
    }else if(Ext.os.is.Phone){ 
     this._bIsPhone = true; 
    }else{ 
     this._bIsOther = true; 
    }