Блок служит для сбора данных о браузере пользователя.
Элемент | Способы использования | Описание |
---|---|---|
svg | deps |
Проверяет, поддерживает ли браузер формат SVG. |
Блок реализован в технологиях:
bh.js
bemhtml
Блок подключает инлайновый скрипт, добавляющий тегу <html>
CSS
-классы, указывающие, включен ли JavaScript – ua_js_no
/ua_js_yes
.
Не имеет визуального представления на странице.
Используется внутри блока page и самостоятельно подключать его к странице обычно не требуется.
svg
Элемент подключает инлайновый скрипт, добавляющий тегу <html>
CSS
-классы, указывающие, поддерживается ли SVG – ua_svg_no
/ua_svg_yes
.
Не имеет визуального представления на странице.
Для использования включите элемент в файл зависимостей deps.js
блока, которому требуются данные о поддержке SVG:
На уровне touch
, блок предоставляет объект, содержащий набор свойств, указывающих особенности мобильного устройства.
Имя | Тип | Описание |
---|---|---|
ua | {String} |
Значение HTTP-заголовка юзер-агента. |
ios | {String} |{undefined} |
Версия мобильной платформы iOS. |
android | {String} |{undefined} |
Версия мобильной платформы Android. |
bada | {String} |{undefined} |
Версия мобильной платформы Bada OS. |
wp | {String} |{undefined} |
Версия мобильной платформы Windows Phone. |
other | {Boolean} |
Мобильная платформа неопределена. |
opera | {String} |
Версия браузера Opera. |
chrome | {String} |
Версия браузера Chrome. |
iphone | {Boolean} |
Устройство – iPhone. |
ipad | {Boolean} |
Устройство – iPad. |
screenSize | {String} |
Размер экрана устройства. |
connection | {String} |
Тип активного соединения. |
dpr | {Number} |
Относительная плотность пикселей. |
flash | {String} |{undefined} |
Версия Adobe Flash. |
video | {Boolean} |
Поддержка видео. |
width | {Number} |
Ширина рабочей области экрана в px. |
height | {Number} |
Высота рабочей области экрана в px. |
landscape | {Boolean} |
Ориентация устройства. |
Элемент | Способы использования | Описание |
---|---|---|
dom | JS |
Предоставляет набор модификаторов на основании свойств блока ua на тач-уровне. |
Элемент | Модификатор | Допустимые значения | Способы использования | Описание |
---|---|---|---|---|
dom | platform | 'ios' , 'android' , 'bada' , 'wp' , 'other' |
JS |
Мобильная платформа пользовательского устройства. |
browser | 'opera' , 'chrome' |
JS |
Тип браузера. | |
ios | '8' , '7' ... |
JS |
Версия операционной системы для устройств iOS. | |
ios-subversion | '81' , '80' ... |
JS |
Подверсия операционной системы для устройств iOS. | |
android | '4' , '3' ... |
JS |
Версия операционной системы для устройств Android. | |
screen-size | 'large' , 'normal' , 'small' |
JS |
Размер экрана устройства. | |
svg | 'yes' , 'no' |
JS |
Поддержка формата SVG. | |
orient | 'landscape' , 'portrait' |
JS |
Ориентация устройства. |
Блок реализован в технологиях:
js
bh.js
bemhtml
Блок позволяет определить:
modules.require('ua', function(ua) {
console.dir(ua);
});
ua
Тип: {String}
.
Тип мобильного браузера.
ios
Тип: {String|undefined}
.
Версия мобильной платформы. Строка с номером версии, если платформа распознана как iOS.
android
Тип: {String|undefined}
.
Версия мобильной платформы. Строка с номером версии, если платформа распознана как Android.
bada
Тип: {String|undefined}
.
Версия мобильной платформы. Строка с номером версии, если платформа распознана как Bada OS.
wp
Тип: {String|undefined}
.
Версия мобильной платформы. Строка с номером версии, если платформа распознана как Windows Phone.
other
Тип: {Boolean}
.
Мобильная платформа неопределена. Устанавливается в значение true
для всех мобильных платформ, кроме вышеперечисленных.
opera
Тип: {String}
.
Версия браузера Opera.
chrome
Тип: {String}
.
Версия браузера Chrome.
iphone
Тип: {Boolean}
.
Значение true
характеризует устройство как iPhone.
ipad
Тип: {Boolean}
.
Значение true
характеризует устройство как iPad.
screenSize
Тип: {String}
.
Размер экрана устройства.
Доступны следующие значения:
large
– размер экрана больше 320 px.normal
– размер экрана равен 320 px.small
– размер экрана меньше 320 px.connection
Тип: {String}
.
Тип активного сетевого соединения.
Доступны следующие значения:
wifi
– соединение по Wi-Fi.3g
– соединение по 3G.2g
– соединение по EDGE и GSM.dpr
Тип: {Number}
.
Коэффициент относительной плотности пикселей. Характеризует отношение физических пикселей устройства к аппаратно независимым (dppx). Позволяет определить использует ли устройство дисплей с повышенной плотностью пикселей (например, Retina). По умолчанию 1
.
Например, можно проверить, что устройство использует Retina и отдавать браузеру изображения с высоким разрешением:
modules.require('ua', function(ua) {
var imgFile = ua.dpr === 1 ? 'image.png' : 'image@2x.png';
// ···
});
flash
Тип: {String|undefined}
.
Версия Adobe Flash. undefined
, если Flash недоступен.
video
Тип: {Boolean}
.
Значение true
, если видео поддерживается.
svg
Тип: {Boolean}
.
Значение true
, если SVG поддерживается.
width
Тип: {Number}
.
Ширина рабочей области экрана в пикселях.
height
Тип: {Number}
.
Высота рабочей области экрана в пикселях.
landscape
Тип: {Boolean}
.
Значение true
при горизонтальной ориентации.
dom
блока ua
Элемент служит для дополнения базовой БЭМ-сущности блока ua
набором модификаторов на основе данных, собранных блоком ua
на touch-уровне.
Это позволяет учитывать особенности мобильного устройства, проверяя наличие и значение модификаторов.
modules.define('ios-test', ['i-bem__dom'], function(provide, BEMDOM) {
provide(BEMDOM.decl(this.name, {
onSetMod: {
js: {
inited: function() {
this.findBlockOutside('ua').hasMod('platform', 'ios') &&
this.setMod('ios');
}
},
'ios': function() {
console.log('You are iOS user');
}
}
}));
});
Элемент автоматически подключается с блоком page
. Не требуется подключать его вручную, если в проекте используется page
.
Значения всех модификаторов элемента, кроме orient
, устанавливаются в момент инициализации блока и остаются неизменными.
platform
Допустимые значения: 'ios'
, 'android'
, 'bada'
, 'wp'
, 'other'
.
Способ использования: JS
.
Модификатор указывает мобильную платформу пользовательского устройства.
ios
– iOS.android
– Android.bada
– Bada OS.wp
– Windows Phone.other
– все остальные мобильные платформы.browser
Допустимые значения: 'opera'
, 'chrome'
.
Способ использования: JS
.
Модификатор указывает тип мобильного браузера.
opera
– Opera.chrome
– Chrome.ios
Допустимые значения: '8'
, '7'
...
Способ использования: JS
.
Модификатор указывает версию операционной системы для устройств iOS.
ios-subversion
Допустимые значения: '81'
, '80'
...
Способ использования: JS
.
Модификатор указывает подверсию операционной системы для устройств iOS. Номер подверсии состоит из номера версии и первого символа после разделителя. Номер указывается без символов-разделителей '.'
. Например, для iOS версии 8.1.3 значением модификатора будет '81'
.
android
Допустимые значения: '4'
, '3'
...
Способ использования: JS
.
Модификатор указывает версию операционной системы для устройств Android.
screen-size
Допустимые значения: 'large'
, 'normal'
, 'small'
.
Способ использования: JS
.
Модификатор указывает размер экрана пользовательского устройства.
large
– размер экрана больше 320 px.normal
– размер экрана равен 320 px.small
– размер экрана меньше 320 px.svg
Допустимые значения: 'yes'
, 'no'
.
Способ использования: JS
.
Модификатор указывает на наличие у пользовательского устройства поддержки формата SVG.
yes
– поддержка SVG присутствует.no
– поддержка SVG отсутствует.orient
Допустимые значения: 'landscape'
, 'portrait'
.
Способ использования: JS
.
Модификатор указывает текущую ориентацию устройства.
landscape
– горизонтальная ориентация.portrait
– вертикальная ориентация.Значение модификатора изменяется динамически при смене ориентации устройства. Поэтому можно подписываться на изменение значения модификатора:
modules.define('inner', ['i-bem__dom'], function(provide, BEMDOM) {
provide(BEMDOM.decl(this.name, {
onSetMod: {
js: {
inited: function() {
this._ua = this
.findBlockOutside('ua')
.on({ modName : 'orient', modVal : '*' }, this._onOrientChange, this);
this.setMod('orient', this._ua.getMod('orient'));
},
'': function() {
this._ua.un({ modName : 'orient', modVal : '*' }, this._onOrientChange, this);
}
},
'orient': {
'portrait': function() {
this._reDraw('portrait');
},
'landscape': function() {
this._reDraw('landscape');
}
}
},
_onOrientChange: function(e, data) {
// переключаемся между значениям собственного модификатора `orient`
this.setMod(data.modName, data.modVal);
},
_reDraw: function(orient) {
// обновляем содержимое контейнера `inner` при смене ориентации устройства
console.log(orient);
BEMDOM.update(this.domElem, orient);
}
}));
});
В примере блок-контейнер inner
, вложенный в page
, подменяет свое содержимое при смене ориентации устройства.