/*===========================
Device/OS Detection
===========================*/
;(function ($) {
"use strict";
var device = {};
var ua = navigator.userAgent;
var android = ua.match(/(Android);?[\s\/]+([\d.]+)?/);
var ipad = ua.match(/(iPad).*OS\s([\d_]+)/);
var ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/);
var iphone = !ipad && ua.match(/(iPhone\sOS)\s([\d_]+)/);
device.ios = device.android = device.iphone = device.ipad = device.androidChrome = false;
// Android
if (android) {
device.os = 'android';
device.osVersion = android[2];
device.android = true;
device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0;
}
if (ipad || iphone || ipod) {
device.os = 'ios';
device.ios = true;
}
// iOS
if (iphone && !ipod) {
device.osVersion = iphone[2].replace(/_/g, '.');
device.iphone = true;
}
if (ipad) {
device.osVersion = ipad[2].replace(/_/g, '.');
device.ipad = true;
}
if (ipod) {
device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null;
device.iphone = true;
}
// iOS 8+ changed UA
if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) {
if (device.osVersion.split('.')[0] === '10') {
device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0];
}
}
// Webview
device.webView = (iphone || ipad || ipod) && ua.match(/.*AppleWebKit(?!.*Safari)/i);
// Minimal UI
if (device.os && device.os === 'ios') {
var osVersionArr = device.osVersion.split('.');
device.minimalUi = !device.webView &&
(ipod || iphone) &&
(osVersionArr[0] * 1 === 7 ? osVersionArr[1] * 1 >= 1 : osVersionArr[0] * 1 > 7) &&
$('meta[name="viewport"]').length > 0 && $('meta[name="viewport"]').attr('content').indexOf('minimal-ui') >= 0;
}
// Check for status bar and fullscreen app mode
var windowWidth = $(window).width();
var windowHeight = $(window).height();
device.statusBar = false;
if (device.webView && (windowWidth * windowHeight === screen.width * screen.height)) {
device.statusBar = true;
}
else {
device.statusBar = false;
}
// Classes
var classNames = [];
// Pixel Ratio
device.pixelRatio = window.devicePixelRatio || 1;
classNames.push('pixel-ratio-' + Math.floor(device.pixelRatio));
if (device.pixelRatio >= 2) {
classNames.push('retina');
}
// OS classes
if (device.os) {
classNames.push(device.os, device.os + '-' + device.osVersion.split('.')[0], device.os + '-' + device.osVersion.replace(/\./g, '-'));
if (device.os === 'ios') {
var major = parseInt(device.osVersion.split('.')[0], 10);
for (var i = major - 1; i >= 6; i--) {
classNames.push('ios-gt-' + i);
}
}
}
// Status bar classes
if (device.statusBar) {
classNames.push('with-statusbar-overlay');
}
else {
$('html').removeClass('with-statusbar-overlay');
}
// Add html classes
if (classNames.length > 0) $('html').addClass(classNames.join(' '));
// keng..
device.isWeixin = /MicroMessenger/i.test(ua);
$.device = device;
})(Zepto);
js 判斷移動端系統(tǒng)版本Device.js
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
- 文/潘曉璐 我一進店門拗盒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人锥债,你說我怎么就攤上這事陡蝇。” “怎么了哮肚?”我有些...
- 文/不壞的土叔 我叫張陵登夫,是天一觀的道長。 經(jīng)常有香客問我允趟,道長恼策,這世上最難降的妖魔是什么? 我笑而不...
- 正文 為了忘掉前任潮剪,我火速辦了婚禮涣楷,結果婚禮上,老公的妹妹穿的比我還像新娘抗碰。我一直安慰自己狮斗,他們只是感情好,可當我...
- 文/花漫 我一把揭開白布弧蝇。 她就那樣靜靜地躺著碳褒,像睡著了一般。 火紅的嫁衣襯著肌膚如雪看疗。 梳的紋絲不亂的頭發(fā)上沙峻,一...
- 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼佑笋!你這毒婦竟也來了?” 一聲冷哼從身側響起斑鼻,我...
- 正文 年R本政府宣布,位于F島的核電站鹅很,受9級特大地震影響嘶居,放射性物質發(fā)生泄漏。R本人自食惡果不足惜促煮,卻給世界環(huán)境...
- 文/蒙蒙 一邮屁、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧菠齿,春花似錦佑吝、人聲如沸。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至襟士,卻和暖如春盗飒,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背陋桂。 一陣腳步聲響...
推薦閱讀更多精彩內(nèi)容
- wx.checkJsApi({ jsApiList: ['chooseImage'], // 需要檢測的JS接口列...
- 書接上文傻粘。 前情回顧:Miss Li擇業(yè)記-9 莎士比亞說:“一千人眼中有一千個哈姆雷特“锏簦”對于深圳弦悉,一千個人有一...