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 环境检测通过简单的方式提供大范围的光谱。

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

  • 电话
  • 药片
  • 桌面

注意:这个值也可以通过在 url 中添加“?deviceType=”来伪造。

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

Ext.os.name是返回的单例:

  • iOS
  • 安卓
  • 网络操作系统
  • 黑莓
  • RIM平板电脑
  • 苹果系统
  • 视窗
  • 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

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 设备 API

于 2012-06-01T13:44:07.783 回答
2

我找到了答案:

情况似乎是 Ext.os.is.(平板电脑/手机或其他)是真实的或未定义的。如果不是这种情况,它将是未定义的。IaExt.os.is.Tablet在平板电脑上为真,在非平板电脑上为 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 回答