js-wrench
Version:
JS函数库
59 lines (56 loc) • 1.74 kB
text/typescript
type browserType =
| 'IE7'
| 'IE8'
| 'IE9'
| 'IE10'
| 'IE11'
| 'Edge'
| 'FireFox'
| 'Opera'
| 'Chrome'
| 'Safari'
| null //不对低版本做校验
/**
* @description 获取浏览器类型
*
* @return {*} {browserType} | 'IE7'| 'IE8'| 'IE9'| 'IE10'| 'IE11'| 'Edge'| 'FireFox'| 'Opera'| 'Chrome'| 'Safari'| null
* @example getBrowserType() => 'Chrome'
*/
const getBrowserType = (): browserType => {
let types: browserType = null
let userAgentInfo: string = navigator.userAgent
let isOpera: boolean = userAgentInfo.indexOf('Opera') > -1
let isIE: boolean =
userAgentInfo.indexOf('compatible') > -1 &&
userAgentInfo.indexOf('MSIE') > -1 &&
!isOpera
let isIE11: boolean =
userAgentInfo.indexOf('Trident') > -1 &&
userAgentInfo.indexOf('rv:11.0') > -1
let isEdge: boolean = userAgentInfo.indexOf('Edge') > -1 && !isIE
let isFireFox: boolean = userAgentInfo.indexOf('Firefox') > -1
let isSafari: boolean =
userAgentInfo.indexOf('Safari') > -1 &&
userAgentInfo.indexOf('Chrome') === -1
let isChrome: boolean =
userAgentInfo.indexOf('Chrome') > -1 &&
userAgentInfo.indexOf('Safari') > -1
if (isIE) {
let regIE: RegExp = new RegExp('MSIE (\\d+\\.\\d+);')
regIE.test(userAgentInfo)
let version: number = parseFloat(RegExp['$1'])
if (version == 7) types = 'IE7'
else if (version == 8) types = 'IE8'
else if (version == 9) types = 'IE9'
else if (version == 10) types = 'IE10'
else types = null
}
if (isIE11) types = 'IE11'
if (isEdge) types = 'Edge'
if (isFireFox) types = 'FireFox'
if (isOpera) types = 'Opera'
if (isSafari) types = 'Safari'
if (isChrome) types = 'Chrome'
return types
}
export default getBrowserType