vue開發(fā)之不同瀏覽器的類型判斷方式
一、通過navigator.userAgent來進(jìn)行瀏覽器類型判斷
定義和用法
userAgent 屬性是一個(gè)只讀的字符串,聲明了瀏覽器用于 HTTP 請(qǐng)求的用戶代理頭的值。
一般來講,它是在 navigator.appCodeName 的值之后加上斜線和 navigator.appVersion 的值構(gòu)成的。
例如:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322)。
注:用戶代理頭:user-agent header。
語法
navigator.userAgent
navigator.userAgent使用場(chǎng)景
判斷是Android或者iOS
/** ?* 判斷瀏覽器類型:Android/iOS ?*/ function getOSType() { ? if (/(Android)/i.test(navigator.userAgent)) { ? ? return 'Android' ? } else if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) { ? ? return 'iOS' ? } }
判斷是否是微信瀏覽器
function is_weixin(){ ? if (/(micromessenger)/i.test(navigator.userAgent)) { ? ? return true ? } else { ? ? return false ? } }
判斷是否是QQ瀏覽器
function is_qq(){ ? if (/(MQQBrowser)/i.test(navigator.userAgent)) { ? ? return true ? } else { ? ? return false ? } }
判斷是手機(jī)端、平板還是PC
var os = function (){ ? ? var ua = navigator.userAgent, ? ? isWindowsPhone = /(?:Windows Phone)/.test(ua), ? ? isSymbian = /(?:SymbianOS)/.test(ua) || isWindowsPhone, ? ? isAndroid = /(?:Android)/.test(ua), ? ? isFireFox = /(?:Firefox)/.test(ua), ? ? isChrome = /(?:Chrome|CriOS)/.test(ua), ? ? isTablet = /(?:iPad|PlayBook)/.test(ua) || (isAndroid && !/(?:Mobile)/.test(ua)) || (isFireFox && /(?:Tablet)/.test(ua)), ? ? isPhone = /(?:iPhone)/.test(ua) && !isTablet, ? ? isPc = !isPhone && !isAndroid && !isSymbian; ? ? return { ? ? ? ? isTablet: isTablet, ? ? ? ? isPhone: isPhone, ? ? ? ? isAndroid: isAndroid, ? ? ? ? isPc: isPc ? ? }; }(); ? if (os.isAndroid || os.isPhone) { ? console.log("手機(jī)") } else if (os.isTablet) { ? console.log("平板") } else if(os.isPc) { ? console.log("電腦") }
navigator.userAgent格式
部分瀏覽器格式如下(PC):
chrome瀏覽器
:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36IE11瀏覽器
:Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; McAfee; rv:11.0) like Geckosafari 5.1 – MAC
:User-Agent:Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50safari 5.1 – Windows
:User-Agent:Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50Firefox 4.0.1 – MAC
:User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0.1) Gecko/20100101 Firefox/4.0.1Firefox 4.0.1 – Windows
:User-Agent:Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1Opera 11.11 – MAC
:User-Agent:Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; en) Presto/2.8.131 Version/11.11Opera 11.11 – Windows
:User-Agent:Opera/9.80 (Windows NT 6.1; U; en) Presto/2.8.131 Version/11.11360瀏覽器
:User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; 360SE)搜狗瀏覽器 1.x
:User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; SE 2.X MetaSr 1.0; SE 2.X MetaSr 1.0; .NET CLR 2.0.50727; SE 2.X MetaSr 1.0)
部分瀏覽器格式如下(移動(dòng)端):
iphone6
:Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1ipad
:Mozilla/5.0 (iPad; CPU OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1Android QQ瀏覽器 For android
:User-Agent: MQQBrowser/26 Mozilla/5.0 (Linux; U; Android 2.3.7; zh-cn; MB200 Build/GRJ22; CyanogenMod-7) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1Windows Phone
:User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Titan)BlackBerry
:User-Agent: Mozilla/5.0 (BlackBerry; U; BlackBerry 9800; en) AppleWebKit/534.1+ (KHTML, like Gecko) Version/6.0.0.337 Mobile Safari/534.1+UC標(biāo)準(zhǔn)
:User-Agent: NOKIA5700/ UCWEB7.0.2.37/28/999
二、通過navigator.platform來進(jìn)行瀏覽器類型判斷
因?yàn)楦鞔鬄g覽器廠商可以對(duì)navigator.userAgent進(jìn)行設(shè)置,導(dǎo)致了userAgent格式的混亂。例如:華為mate10 默認(rèn)瀏覽器 userAgent的信息如下:
Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.89 Safari/537.36
結(jié)果可想而知,根據(jù)userAgent做出的判斷:當(dāng)前瀏覽器類型為PC。所以需要在通過navigator.userAgent判斷的基礎(chǔ)上再對(duì)navigator.platform進(jìn)行判斷,以此來確保瀏覽器類型判斷的準(zhǔn)確性。
定義和用法
platform 屬性是一個(gè)只讀的字符串,聲明了運(yùn)行瀏覽器的操作系統(tǒng)和(或)硬件平臺(tái)。
語法
navigator.platform
navigator.platform使用場(chǎng)景
判斷是Android或者iOS
/** ?* 判斷是Android或者iOS ?*/ function getPlatformType() { ? if ('Android' === navigator.platform) { ? ? return 'Android' ? } else if ('iPhone' === navigator.platform || 'iPod' === navigator.platform || 'iPad' === navigator.platform) { ? ? return 'iOS' ? } }
navigator.platform返回的可能值
> HP-UX
> Linux i686
> Linux armv7l
> Mac68K
> MacPPC
> MacIntel
> SunOS
> Win16
> Win32
> WinCE
> iPhone
> iPod
> iPad
> Android
>黑莓
>歌劇
三、通過屏幕尺寸來進(jìn)行瀏覽器類型判斷
通過屏幕大小可以判斷瀏覽器類型
獲取屏幕寬度的方法如下:
- 網(wǎng)頁可見區(qū)域?qū)挘篸ocument.body.clientWidth
- 網(wǎng)頁可見區(qū)域高:document.body.clientHeight
- 網(wǎng)頁可見區(qū)域?qū)挘篸ocument.body.offsetWidth (包括邊線的寬)
- 網(wǎng)頁可見區(qū)域高:document.body.offsetHeight (包括邊線的寬)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
vue中post請(qǐng)求報(bào)400的解決方案
這篇文章主要介紹了vue中post請(qǐng)求報(bào)400的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10ant desing vue table 實(shí)現(xiàn)可伸縮列的完整例子
最近在使用ant-design-vue做表格時(shí),遇到要做一個(gè)可伸縮列表格的需求,在網(wǎng)上一直沒有找到好的方法,于是小編動(dòng)手自己寫個(gè)可以此功能,下面小編把a(bǔ)nt desing vue table 可伸縮列的實(shí)現(xiàn)代碼分享到腳本之家平臺(tái)供大家參考2021-05-05vue.js父子組件傳參的原理與實(shí)現(xiàn)方法
這篇文章主要介紹了vue.js父子組件傳參的原理與實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了vue.js父子組件傳參的基本原理、實(shí)現(xiàn)方法與相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2023-04-04vue滾動(dòng)固定頂部及修改樣式的實(shí)例代碼
這篇文章主要介紹了vue滾動(dòng)固定頂部及修改樣式,本文給大家提到了滾動(dòng)固定位置有多種方法,感興趣的朋友跟隨小編一起看看吧2019-05-05vue.js中v-on:textInput無法執(zhí)行事件問題的解決過程
大家都知道vue.js通過v-on完成事件處理與綁定,但最近使用v-on的時(shí)候遇到了一個(gè)問題,所以下面這篇文章主要給大家介紹了關(guān)于vue.js中v-on:textInput無法執(zhí)行事件問題的解決過程,需要的朋友可以參考下。2017-07-07Vue前端如何實(shí)現(xiàn)與后端進(jìn)行數(shù)據(jù)交互
這篇文章主要介紹了Vue前端如何實(shí)現(xiàn)與后端進(jìn)行數(shù)據(jù)交互,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03antd Form組件方法getFieldsValue獲取自定義組件的值操作
這篇文章主要介紹了antd Form組件方法getFieldsValue獲取自定義組件的值操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-10-10