H5判断移动设备的型号和浏览器

2019-11-28  本文已影响0人  ThemisHoo
实际上 navigator.userAgent 就可以拿到所有信息

Mozilla/5.0 (Linux; Android 8.0.0; Nexus 6P Build/OPP3.170518.006) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Mobile Safari/537.36

我们需要分离出具体的手机型号和浏览器就要做一些解析

首先安装mobile-detect
npm install mobile-detect --save
在node中使用mobile-detect

(我尝试在前端页面使用import MobileDetect from 'mobile-detect',但md = new MobileDetect(detectType)打印出的结果为null,不知道是哪里写错了,还是不支持import)

const MobileDetect = require('mobile-detect');

exports.requestMapping = '/verify';

Array.prototype.contains = (needle) => {
    for (i in this) {
        if(this[i].indexOf(needle) > 0) {
            return i
        }
        return -1
    }
}
// 增加埋点
router.post('/detect_type', (req, res, next) => {
    let detectType = req.body.detectType
    let md = new MobileDetect(detectType)
    console.log(detectType)
    console.log(md)
    let os = md.os() // 获取系统
    let model = md.mobile()
    if(os == 'iOS') {
        os = `${md.os()}${md.version("iPhone")}`
        model = md.mobile()
    }else if(os == 'AndroidOS') {
        os = `${md.os()}${md.version("Android")}`
        let sss = detectType.split(';')
        let i = sss.contains("Build/")
        if(i > -1) {
            model = sss[i].substring(0, sss[i].indexOf("Build/"))
        }
    }
    LOG.info(`系统:${os}---手机型号:${model}---浏览器:${md.userAgent()}`)
    res.json({success: true,data: `${os}---${model}`});
});

这里md打印出的信息为

MobileDetect {
ua: 'Mozilla/5.0 (Linux; Android 8.0.0; Nexus 6P Build/OPP3.170518.006) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Mobile Safari/537.36',
_cache: {},

maxPhoneWidth: 600 }

在前端中调用detect_type传入navigator.userAgent
        let detect_type = window.navigator.userAgent
        let data = {
            detectType: detect_type
        }
        this.request.post('/verify/detect_type', data).then((res)=> {
            console.log(res)
        }).catch()

参考文档:https://github.com/hgoebl/mobile-detect.js/
参考文档:https://www.jb51.net/article/136197.htm

上一篇下一篇

猜你喜欢

热点阅读