8

私はこの質問を見落としているだけだと確信していますが、デバイスを確認する方法が見つからないようです。
デバイスが電話、横向きモードのタブレット、縦向きモードのタブレット、またはその他のデバイス (コンピューター) のいずれであるかを確認したい。

私が持っているのはこれです:

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

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

var x = Ext.platform;

しかし、プラットフォームは未定義です (おそらく、これが Sencha Touch 1 のやり方だからです)。

デバイスチェックにアクセスするための正しい場所を知っている人はいますか?

4

3 に答える 3

18

Sencha Environment Detectionは、シンプルな手段で広いスペクトルを提供します。

Ext.os.is.Tabletの代わりに、次の値を返すExt.os.deviceTypeを介して作業を楽にすることができます:

  • 電話
  • タブレット
  • デスクトップ

注意: この値は、URL に "?deviceType=" を追加することで偽装することもできます。

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

Ext.os.nameは以下を返すシングルトンです。

  • iOS
  • アンドロイド
  • WebOS
  • ブラックベリー
  • RIMタブレット
  • マックOS
  • ウィンドウズ
  • 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.ビデオ
  • Ext.feature.has.Vml
  • Ext.feature.has.WebSockets

iOS でフルスクリーン/アプリ/ホームスクリーン ブラウザ モードを検出するには:

window.navigator.standalone == true

Orientation 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...
    }
于 2013-07-02T05:50:31.707 に答える
4

Ext.env.OS の is()方法を使用します。

直接プロパティ チェックを介して使用できるのは、バージョンの主要なコンポーネントと簡略化された値のみであることに注意してください。サポートされている値: iOS、iPad、iPhone、iPod、Android、WebOS、BlackBerry、Bada、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を使用することもできます

于 2012-06-01T13:44:07.783 に答える
2

私はそれに対する答えを見つけました:

どうやら Ext.os.is.(タブレット/電話など) が true または未定義です。そうでない場合は、未定義になります。IaExt.os.is.Tabletはタブレットの場合は true であり、そうでない場合は undefined です。

これが私が探していた答えです

if(Ext.os.is.Tablet){
        this._bIsTablet = true;
    }else if(Ext.os.is.Phone){
        this._bIsPhone = true;
    }else{
        this._bIsOther = true;
    }
于 2012-06-07T07:35:56.987 に答える