我的笔记:mobile-detect获取移动端设备信息插件

3,147 阅读2分钟

这个不是很准,在浏览器种使用基本会以媒体查询到的浏览器宽高为基准,推荐在壳子里使用 you should not use this library in your HTML page and it's less reliable when used server-side (Node.js)

直接引用:CDN地址

使用npm/bower工具

npm地址

import MobileDetect from 'mobile-detect'


[属性:方法](https://hgoebl.github.io/mobile-detect.js/doc/MobileDetect.html#phone)

is(key)

从userAgent, os, phone, tablet和其他有关userAgent的属性中判断是否有key这个字符串,返回布尔值


.mobile()

获取手机或平板电脑类型,若不是移动设备,则返回null。若检测不到设备,则会返回UnknownPhone或UnknownTablet或UnknownMobile。


.phone()

可能得到的值:iPhone, BlackBerry, HTC, Nexus, Dell, Motorola, Samsung, LG, Sony, Asus, NokiaLumia, Micromax, Palm, Vertu, Pantech, Fly, Wiko, iMobile, SimValley, Wolfgang, Alcatel, Nintendo, Amoi, INQ, GenericPhone


.tablet()

可能得到的值:iPad, NexusTablet, GoogleTablet, SamsungTablet, Kindle, SurfaceTablet, HPTablet, AsusTablet, BlackBerryTablet, HTCtablet, MotorolaTablet, NookTablet, AcerTablet, ToshibaTablet, LGTablet, FujitsuTablet, PrestigioTablet, LenovoTablet, DellTablet, YarvikTablet, MedionTablet, ArnovaTablet, IntensoTablet, IRUTablet, MegafonTablet, EbodaTablet, AllViewTablet, ArchosTablet, AinolTablet, NokiaLumiaTablet, SonyTablet, PhilipsTablet, CubeTablet, CobyTablet, MIDTablet, MSITablet, SMiTTablet, RockChipTablet, FlyTablet, bqTablet, HuaweiTablet, NecTablet, PantechTablet, BronchoTablet, VersusTablet, ZyncTablet, PositivoTablet, NabiTablet, KoboTablet, DanewTablet, TexetTablet, PlaystationTablet, TrekstorTablet, PyleAudioTablet, AdvanTablet, DanyTechTablet, GalapadTablet, MicromaxTablet, KarbonnTablet, AllFineTablet, PROSCANTablet, YONESTablet, ChangJiaTablet, GUTablet, PointOfViewTablet, OvermaxTablet, HCLTablet, DPSTablet, VistureTablet, CrestaTablet, MediatekTablet, ConcordeTablet, GoCleverTablet, ModecomTablet, VoninoTablet, ECSTablet, StorexTablet, VodafoneTablet, EssentielBTablet, RossMoorTablet, iMobileTablet, TolinoTablet, AudioSonicTablet, AMPETablet, SkkTablet, TecnoTablet, JXDTablet, iJoyTablet, FX2Tablet, XoroTablet, ViewsonicTablet, VerizonTablet, OdysTablet, CaptivaTablet, IconbitTablet, TeclastTablet, OndaTablet, JaytechTablet, BlaupunktTablet, DigmaTablet, EvolioTablet, LavaTablet, AocTablet, MpmanTablet, CelkonTablet, WolderTablet, MediacomTablet, MiTablet, NibiruTablet, NexoTablet, LeaderTablet, UbislateTablet, PocketBookTablet, KocasoTablet, HisenseTablet, Hudl, TelstraTablet, GenericTablet


.userAgent()

返回(第一个)检测到的用户代理。无则返回null。
可能得到的值:Chrome, Dolfin, Opera, Skyfire, Edge, IE, Firefox, Bolt, TeaShark, Blazer, Safari, WeChat, UCBrowser, baiduboxapp, baidubrowser, DiigoBrowser, Puffin, Mercury, ObigoBrowser, NetFront, GenericBrowser, PaleMoon


.userAgents()

返回检测到的所有用户代理。无则返回null。


## .os()

检测操作系统,返回操作系统字符串或者null。
可能得到的值:AndroidOS, BlackBerryOS, PalmOS, SymbianOS, WindowsMobileOS, WindowsPhoneOS, iOS, MeeGoOS, MaemoOS, JavaOS, webOS, badaOS, BREWOS

import MobileDetect from 'mobile-detect'
function getSystem(){
	Array.prototype.contains = function(needle) {
        for (i in this) {
            if (this[i].indexOf(needle) > 0)
                return i;
        }
        return -1;
    }

    var device_type = navigator.userAgent; //获取userAgent信息
    console.log(device_type); 
    var md = new MobileDetect(device_type); //初始化mobile-detect
    var os = md.os(); //获取系统
    var mob = md.mobile()
    var phone = md.phone() 
    var version = md.version()
    var tablet= md.tablet()
    // alert(os+'---'+mob+'~~~'+phone+'||'+tablet+'----'+version)
    // alert(md.is('phone')) //返回布尔
    // alert(md.is('tablet'))
    alert(md.is('HTC'))//是不是HTC的牌子
    alert(md.mobile('tablet')) //返回品牌
    alert(md.mobile('phone'))
    var model = "";
    if (os == "iOS") { //ios系统的处理
        os = +md.version("iPhone");
        console.log(os)
        model = md.mobile();
    } else if (os == "AndroidOS") { //Android系统的处理
        os = md.os() + md.version("Android");
        var sss = device_type.split(";");
        var i = sss.contains("Build/");
        if (i > -1) {
            debugger
            model = sss[i].substring(0, sss[i].indexOf("Build/"));
        }
    }
    //    alert(os + "---" + model);//打印系统版本和手机型号
    //   document.write(model + '||' + os, '打印系统版本和手机型号')
    return {os,model}
}

export const {os,model} = getSystem()