2012-06-01 3 views
8

Я уверен, что я просто обозреваю этот вопрос, но я не могу найти, как проверить устройство.
Я хочу проверить, есть ли устройство - телефон, планшет в альбомном режиме, планшет в портретном режиме или другое устройство (компьютер).Проверка устройства 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, который возвратит:

  • Телефон
  • Tablet
  • Desktop

NB: это значение также может быть испорчено добавлением «? DeviceType =» к URL-адресу.

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

Внешние данные.имя является одноточечно возвращение:

  • IOS
  • Android
  • WebOS
  • BlackBerry
  • RIMTablet
  • MacOS
  • Окна
  • Linux
  • Bada
  • Другое

Обычная способность обнаружения браузера доступна через 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

Чтобы обнаружить полноэкранное приложение// режим браузера на рабочем столе прошивки:

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

+0

Я видел этот путь, но проблема в том, что я также хочу указать, является ли устройство мобильным устройством или планшетом. Android, например, может работать как на планшете, так и на мобильном устройстве. –

2

Я нашел ответ на этот вопрос:

Что-то похоже на то, что Ext.os.is. (планшет/телефон или что-то еще) является истинным или неопределенным. Если это не так, это будет неопределенным. I.a. Ext.os.is.Tablet верно, если на планшете и не определено, когда нет.

Так что это ответ, который я искал

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