基于VUE實(shí)現(xiàn)判斷設(shè)備是PC還是移動(dòng)端
實(shí)際開發(fā)工作中會(huì)經(jīng)常遇到一個(gè)需求,就是判斷當(dāng)前登錄網(wǎng)頁的設(shè)備是PC還是移動(dòng),要求PC端和移動(dòng)端顯示的是不同的網(wǎng)頁內(nèi)容。
那么我們就需要對當(dāng)前登錄設(shè)備進(jìn)行判斷。
使用 navigator.userAgent 字符串檢測
我是在PC端開發(fā)完接到要做移動(dòng)端的需求,而且移動(dòng)端只有一個(gè)頁面,我就統(tǒng)一放在了一個(gè)文件夾內(nèi)。
首先在 app.vue 文件內(nèi),判斷當(dāng)前設(shè)備是pc端還是移動(dòng)端。
methods: {
// 添加判斷方法
isMobile() {
let flag = navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i);
return flag;
}
},
mounted: {
if(this.isMobile) {
alert("移動(dòng)端");
this.$router.replace('/pc_index');
}else {
alert("pc端");
this.$router.replace('/m_index');
}
}
接下來就略微介紹一下這個(gè)方法,其中用到了 navigator.userAgent 。
這個(gè)方法會(huì)返回一個(gè)只讀的字符串,聲明了瀏覽器在發(fā)送 http 請求時(shí)的用戶代理頭的值。例如:
<script>
document.write("用戶代理:" + navigator.userAgent)
</script>
// pc端輸出結(jié)果:
用戶代理: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36
// 移動(dòng)端輸出結(jié)果:
用戶代理: Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1
.match 方法用于在字符串內(nèi)檢索指定的值,或找到一個(gè)或多個(gè)正則表達(dá)式的匹配,返回值是檢索到的值。
類似的方法還有 indexOf()、laseIndexOf(),但是這兩個(gè)方法返回的是匹配到的值的位置。
所以在判斷方法中使用.match方法匹配所有的移動(dòng)端型號,最后加的 /i 是表示不區(qū)分大小寫。
使用 window.matchMedia() 檢測
也就是利用媒體查詢的方式進(jìn)行判斷。
window.matchMedia 方法會(huì)返回一個(gè)新的 mediaQueryList 對象,表示指定的媒體查詢字符串解析后的結(jié)果。例如:
var result = window.matchMedia("(min-width: 400px)").matches;
console.log(result) //true
window.matchMedia 方法會(huì)返回兩個(gè)參數(shù),一個(gè)是 media,就是查詢的語句內(nèi)容。另一個(gè)是 matches,是返回的結(jié)果,為 boolean 類型。
根據(jù)當(dāng)前設(shè)備的視口寬度判斷是否是移動(dòng)端設(shè)備。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
解決vue數(shù)據(jù)不實(shí)時(shí)更新的問題(數(shù)據(jù)更改了,但數(shù)據(jù)不實(shí)時(shí)更新)
這篇文章主要介紹了解決vue數(shù)據(jù)不實(shí)時(shí)更新的問題(數(shù)據(jù)更改了,但數(shù)據(jù)不實(shí)時(shí)更新),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-10-10
vuejs使用$emit和$on進(jìn)行組件之間的傳值的示例
本篇文章主要介紹了vuejs使用$emit和$on進(jìn)行組件之間的傳值的示例,具有一定的參考價(jià)值,有興趣的可以了解一下2017-10-10
vue3?elementPlus?table實(shí)現(xiàn)列寬可拖拽功能
這篇文章主要介紹了vue3?elementPlus?table實(shí)現(xiàn)列寬可拖拽功能,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-08-08
vue2滾動(dòng)條加載更多數(shù)據(jù)實(shí)現(xiàn)代碼
本篇文章主要介紹了vue2滾動(dòng)條加載更多數(shù)據(jù)實(shí)現(xiàn)代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-01-01

