设备检查sencha touch 2

时间:2012-06-01 13:08:49

标签: sencha-touch-2

我确定我只是忽略了这个问题,但我似乎无法找到如何检查设备 我想检查设备是手机,横向模式平板电脑,纵向模式平板电脑还是其他设备(计算机)。

我拥有的是:

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

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

var x = Ext.platform;

但是平台未定义(可能是因为这是Sencha Touch 1的方式)。

有谁知道我访问设备检查的正确位置?

3 个答案:

答案 0 :(得分:18)

Sencha Environment Detection通过简单的方式提供了大量的光谱。

而不是 Ext.os.is.Tablet ,您可以通过 Ext.os.deviceType 让生活更轻松,它将返回:

  • 电话
  • 平板
  • 桌面

注意:通过在网址中添加“?deviceType =”也可以捏造这个值。

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

Ext.os.name 是单身人士返回:

  • 的iOS
  • 的Android
  • webOS的
  • 黑莓
  • RIMTablet
  • 的MacOS
  • 的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);
    }
});

方向基于Viewport。我通常会添加一个更可靠的监听器:

   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...
    }

答案 1 :(得分:4)

使用Ext.env.OS's 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

答案 2 :(得分:2)

我找到了答案:

似乎情况是Ext.os.is。(平板电脑/手机或其他东西)是真的还是未定义的。如果不是这样,它将是未定义的。 .A。平板电脑上的Ext.os.is.Tablet是真的,而不是。{/ p>

所以这就是我要找的答案

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