Daily-Question icon indicating copy to clipboard operation
Daily-Question copied to clipboard

【Q210】如何判断当前环境是移动端还是PC端

Open shfshanyue opened this issue 5 years ago • 5 comments

shfshanyue avatar Mar 03 '20 13:03 shfshanyue

判断 navigator.userAgent,对于 Android/iPhone 可以匹配以下正则

const appleIphone = /iPhone/i;
const appleIpod = /iPod/i;
const appleTablet = /iPad/i;
const androidPhone = /\bAndroid(?:.+)Mobile\b/i; // Match 'Android' AND 'Mobile'
const androidTablet = /Android/i;

当然,不要重复造轮子,推荐一个库: https://github.com/kaimallea/isMobile

import isMobile from 'ismobilejs'

const mobile = isMobile()

shfshanyue avatar Mar 03 '20 13:03 shfshanyue

isPc() {
    var userAgentInfo = navigator.userAgent
    var Agents = new Array(
      'Android',
      'iPhone',
      'SymbianOS',
      'Windows Phone',
      'iPad',
      'iPod'
    )
    var flag = true
    for (var v = 0; v < Agents.length; v++) {
      if (userAgentInfo.indexOf(Agents[v]) > 0) {
        flag = false
        break
      }
    }
    return flag
  }

嘿嘿照搬了一段商用的

SageSanyue avatar Apr 02 '20 10:04 SageSanyue

@SageSanyue 直接用 Array.prototype.some 就简单多了

shfshanyue avatar Apr 02 '20 11:04 shfshanyue

@SageSanyue 直接用 Array.prototype.some 就简单多了

确实噢😯我完全没动我的zhu脑子:(

isPc() {
    var userAgentInfo = navigator.userAgent
    var Agents = new Array(
      'Android',
      'iPhone',
      'SymbianOS',
      'Windows Phone',
      'iPad',
      'iPod'
    )
    var flag = true
    flag = !Agents.some((ele) => {
        return userAgentInfo.indexOf(ele) > 0 
    })
    return flag
  }

SageSanyue avatar Apr 02 '20 11:04 SageSanyue

@SageSanyue 直接用 Array.prototype.some 就简单多了

确实噢😯我完全没动我的zhu脑子:(

isPc() {
    var userAgentInfo = navigator.userAgent
    var Agents = new Array(
      'Android',
      'iPhone',
      'SymbianOS',
      'Windows Phone',
      'iPad',
      'iPod'
    )
    var flag = true
    flag = !Agents.some((ele) => {
        return userAgentInfo.indexOf(ele) > 0 
    })
    return flag
  }

是不是应该考虑 >= 0 或者 !==-1 会更好一点呢?

BonjourYY avatar Mar 20 '24 07:03 BonjourYY