这些js可以另外建一个.js的文件来写,到时候导出使用
有关浏览器类型的信息都藏在USER-AGENT里面,首先读取navigator.userAgent里面的信息,为了方便利用toLowerCase方法转成小写的形式。
方法一:
1.判断是否是微信环境的
- /**
- * 判断是否是微信环境
- */
- export function isWeiXin () {
- var ua = window.navigator.userAgent.toLowerCase()
- if (ua.indexOf('micromessenger') > -1) {
- return true // 是微信端
- } else {
- return false
- }
- }
复制代码
2.判断是否是移动端的环境
- export function isMobile () {
- if ((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 true // 手机端
- } else {
- return false // alert('PC端')
- }
- }
复制代码
3.我的项目是移动端和pc端写在一个项目里面的,没有分开写,但是页面和路由有分开,如果是移动端的,我会在前面加一个/mb/xxx/:id的路由,如果是pc端的,我会在路由里面/pc/xxx/:id这样来写,到时候在mian.js里面做一个判断
- import Vue from 'vue'
- import VueRouter from 'vue-router'
- // 移动端首页
- import mbHome from '../mb/Index'
- Vue.use(VueRouter)
- const routes = [
- {
- // 移动端首页
- path: '/mb',
- name: 'mbHome',
- component: mbHome,
- meta: {
- title: '首页'
- }
- },
- {
- // PC端首页
- path: '/pc',
- name: 'pcHome',
- component: pcHome,
- meta: {
- title: '首页'
- }
- }
- ]
- const router = new VueRouter({
- mode: 'history',
- // scrollBehavior (to, from, savedPosition) {
- // // 如果你的連結是帶 # 這種
- // // to.hash 就會有值(值就是連結)
- // // 例如 #3
- // if (to.hash) {
- // return {
- // // 這個是透過 to.hash 的值來找到對應的元素
- // // 照你的 html 來看是不用多加處理這樣就可以了
- // // 例如你按下 #3 的連結,就會變成 querySelector('#3'),自然會找到 id = 3 的元素
- // selector: to.hash
- // }
- // }
- // },
- base: window.location.pathname.split('/')[1],
- routes
- })
- export default router
复制代码
4.在main.js导入,然后做一个判断
- import { isWeiXin, isMobile } from './assets/js/utils.js'
- router.beforeEach((to, from, next) => {
- if (to.meta.title) {
- document.title = to.meta.title
- }
- var urlroute = window.location.pathname.toLowerCase().split('/')
- if (store.state.cname !== urlroute[1]) {
- store.commit('setCname', urlroute[1])
- }
- var path = to.path
- if (isWeiXin() || isMobile()) {
- if (path === '/') {
- next({ path: '/mb' })
- } else if (path.indexOf('/pc') !== -1) {
- path = path.replace('/pc', '/mb')
- next({ path: path })
- } else {
- next()
- } else {
- if (path === '/') {
- next({ path: '/pc' })
- } else if (path.indexOf('/mb') !== -1) {
- path = path.replace('/mb', '/pc')
- next({ path: path })
- } else {
- next()
- }
- }
- })
复制代码
===================================
方法二:直接用vue写
- <div>//App.vue,判断是否为移动端</div><div>_isMobile() {</div><div> 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)</div><div><span style="white-space:pre"> </span> return flag;</div><div>}</div><div></div>
复制代码
- <div>
- </div><div><div>//App.vue</div><div>mounted() {</div><div> if (this._isMobile()) {</div><div> alert("手机端");</div><div> this.$router.replace('/m_index');</div><div> } else {</div><div> alert("pc端");</div><div> this.$router.replace('/pc_index');</div><div> }</div><div> }</div></div>
复制代码
|