2012-06-01 15 views
8

私はこの質問を見落としていると思いますが、デバイスをチェックする方法はわかりません。
デバイスが電話機、横向きモードのタブレット、ポートレートモードのタブレット、または他のデバイス(コンピュータ)のいずれであるかを確認したいと思います。私が持っているものデバイスチェックin sencha touch 2

はこれです:

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

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

var x = Ext.platform; 

しかし、プラットフォームが(おそらくこれは煎茶タッチ1の方法であるため)、未定義です。

誰かがデバイスチェックにアクセスする正しい場所を知っていますか?

答えて

18

Sencha Environment Detectionを探していた答えは簡単な手段を通じて大規模なスペクトルを提供しています。

  • 電話
  • タブレット
  • デスクトップ
  • 代わりのExt.os.is.Tablet、あなたは戻りますExt.os.deviceType経由での生活を楽にすることができます

NB:この値は、 "?deviceType ="をURLに追加することによっても見分けることができます。

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

Ext.os名前がシングルトンを返すです:

  • のiOS
  • Androidの橋渡し
  • BlackBerryの
  • RIMTablet
  • MacOSの
  • のWindows
  • Linuxの
  • バダ
  • その他

ブラウザ検出の通常の能力はExt.browser.nameを通じて利用可能です。

最近遭遇したのは、私が気に入っているのは機能検出です。Modernizr/YepNopeに似たコーディングが可能です。 Ext.feature申し出:

  • 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

iOSの/ホームスクリーンのブラウザモード:

window.navigator.standalone == true 

オリエンテーションExt.device.Orientationや向きの変更:

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

オリエンテーションはビューポートに基づいています。私は通常、より信頼性の高いリスナーを追加します:

onOrientationChange: function(viewport, orientation, width, height) { 
     // test trigger and values 
     console.log('o:' + orientation + ' w:' + width + ' h:' + height); 

     if (width > height) { 
      orientation = 'landscape'; 
     } else { 
      orientation = 'portrait'; 
     } 
     // add handlers here... 
    } 
4

Ext.env.OS'sis()メソッドを使用してください。

バージョンの主要コンポーネントと簡略化された値だけが、直接プロパティのチェックによって利用可能な であることに注意してください。サポートされている値は、iOSの、 のiPad、iPhone、iPodの、アンドロイド、WebOSと、ブラックベリー、バダ、MacOSの、Windowsの、 Linux、および

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)) 

またはその他の、あなたもPhoneGap Device API

を使用することができます
+0

私はこのように見ましたが、これはデバイスがモバイルデバイスであるかタブレットであるかを指定したいという問題です。たとえば、Androidはタブレットまたはモバイルの両方で動作します。 –

2

私はその答えを見つけました:

Ext.os.is.(タブレット/電話か他のもの)が真であるか、または定義されていない場合があります。そうでない場合、定義されません。 I.a. Ext.os.is.Tabletは、タブレットの場合はtrue、そうでない場合は未定義です。

だから、これは私が

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