/**
* @文件瀏覽器.js
* @module 瀏覽器
*/
將 * 作為 Dom 從 './dom' 導入;
從“全局/窗口”導入窗口;
const USER_AGENT = window.navigator && window.navigator.userAgent || '';
const webkitVersionMap = (/AppleWebKit\\/([\\d.]+)/i).exec(USER_AGENT);
const appleWebkitVersion = webkitVersionMap ? parseFloat(webkitVersionMap.pop()):空;
/**
* 此設備是否是 iPod。
*
* @靜止的
* @常量
* @type {布爾}
*/
export const IS_IPOD = (/iPod/i).test(USER_AGENT);
/**
* 檢測到的 iOS 版本 - 或 `null`。
*
* @靜止的
* @常量
* @type {字符串|空}
*/
導出常量 IOS_VERSION = (函數() {
const match = USER_AGENT.match(/OS (\\d+)_/i);
如果(匹配 && 匹配[1]){
返回匹配[1];
}
返回空值;
}());
/**
* 這是否是 Android 設備。
*
* @靜止的
* @常量
* @type {布爾}
*/
export const IS_ANDROID = (/Android/i).test(USER_AGENT);
/**
* 檢測到的 Android 版本 - 或 `null`。
*
* @靜止的
* @常量
* @type {數字|字符串|空}
*/
導出常量 ANDROID_VERSION = (函數() {
// 這匹配 Android Major.Minor.Patch 版本
// ANDROID_VERSION 是 Major.Minor 作為數字,如果 Minor 不可用,則只返回 Major
常量匹配 = 用戶 _ 代理。匹配(/安卓(\ d +)(?:\。(\ d +))?(?:\。(\ d+)) */i);
如果(!匹配){
返回空值;
}
const major = match[1] && parseFloat(match[1]);
const minor = match[2] && parseFloat(match[2]);
如果(主要&&次要){
返回 parseFloat(匹配 [1] + '.' + 匹配 [2]);
} 否則如果(主要){
返回專業;
}
返回空值;
}());
/**
* 這是否是本機 Android 瀏覽器。
*
* @靜止的
* @常量
* @type {布爾}
*/
導出常量是 _ 本地 _ 安卓 = 安卓 && 安卓 _ 版本 < 5 & & 蘋果網絡套件版本 < 537;
/**
* 這是否是 Mozilla Firefox。
*
* @靜止的
* @常量
* @type {布爾}
*/
export const IS_FIREFOX = (/Firefox/i).test(USER_AGENT);
/**
* 這是否是 Microsoft Edge。
*
* @靜止的
* @常量
* @type {布爾}
*/
export const IS_EDGE = (/Edg/i).test(USER_AGENT);
/**
* 這是否是谷歌瀏覽器。
*
* 對於 iOS 上的 Chrome,這也將是 `true`,它將有不同的支持
* 因為它實際上是引擎蓋下的 Safari。
*
* @靜止的
* @常量
* @type {布爾}
*/
導出常量是 _ 鉻 =!測試(用戶 _ 代理)||(/克里奧斯/我)測試(用戶 _ 代理)。測試(用戶 _ 代理));
/**
* 檢測到的 Google Chrome 版本 - 或 `null`。
*
* @靜止的
* @常量
* @type {number|null}
*/
導出常量 CHROME_VERSION = (函數() {
const match = USER_AGENT.match(/(Chrome|CriOS)\\/(\\d+)/);
如果(匹配 && 匹配[2]){
返回 parseFloat(匹配[2]);
}
返回空值;
}());
/**
* 檢測到的 Internet Explorer 版本 - 或“null”。
*
* @靜止的
* @常量
* @type {number|null}
*/
導出常量 IE_VERSION = (函數() {
常量結果 = (/MSIE\\s(\\d+)\\.\\d/).exec(USER_AGENT);
讓 version = result && parseFloat(result[1]);
如果(!版本 &&(/三\ /7.0/i)。測試(用戶 _ 代理)&&(RV:11.0/)。測試(用戶 _ 代理)){
// IE 11 與其他 IE 版本有不同的用戶代理字符串
版本 = 11.0;
}
返回版本;
}());
/**
* 這是否是桌面 Safari。
*
* @靜止的
* @常量
* @type {布爾}
*/
導出常量是 _ 野生動物園 =(/野生動物園/I)。測試(用戶 _ 代理)&&!是 _ 鉻 &!是 _ 安卓 &&!是 _ 邊;
/**
* 這是否是 Windows 機器。
*
* @靜止的
* @常量
* @type {布爾}
*/
export const IS_WINDOWS = (/Windows/i).test(USER_AGENT);
/**
* 此設備是否支持觸摸。
*
* @靜止的
* @常量
* @type {布爾}
*/
export const TOUCH_ENABLED = Boolean(Dom.isReal() && (
窗口中的“ontouchstart”||
window.navigator.maxTouchPoints ||
window.DocumentTouch && window.document instanceof window.DocumentTouch));
/**
* 此設備是否為 iPad。
*
* @靜止的
* @常量
* @type {布爾}
*/
導出常量 IS_IPAD = (/iPad/i).test(USER_AGENT) ||
(是 _ 野生動物園 && 觸摸啟用 &&!(/iPhone/I). 測試 (使用者 _ 代理));
/**
* 此設備是否為 iPhone。
*
* @靜止的
* @常量
* @type {布爾}
*/
// Facebook 應用程序的 UIWebView 識別為 iPhone 和 iPad,所以
// 為了識別 iPhone,我們需要排除 iPad。
// http://artsy.github.io/blog/2012/10/18/the-perils-of-ios-user-agent-sniffing/
出口常量是 _ IPHONE =(/蘋果電話/我)。測試(用戶 _ 代理)&&!是 IPAD 的;
/**
* 這是否是 iOS 設備。
*
* @靜止的
* @常量
* @type {布爾}
*/
導出常量 IS_IOS = IS_IPHONE || IS_IPAD || IS_IPOD;
/**
* 這是否是任何風格的 Safari - 包括 iOS。
*
* @靜止的
* @常量
* @type {布爾}
*/
導出常量是 _ 任何野生動物園 = (野生動物園 || IS_IOS) &&!是鉻;