js中判断是PC端还是手机端

//获取浏览器类型

var ua = navigator.userAgent;

//手机型号

var mm = ['iPhone', 'iPad', 'iPod', 'Nexus', 'BenQ-Siemens', 'Meizu', 'Xiaomi', 'BlackBerry', 'CoolPad', 'Dell', 'HTC', 'Huawei', 'Kindle', 'K-Touch', 'Lenovo', 'LG', 'Motorola', 'Nintendo', 'Nokia', 'Onda', 'OPPO', 'OLPC', 'Palm', 'PlayStation', 'Samsung', 'SonyXperia', 'SonyEricsson', 'vivo', 'ZTE', 'UbuntuPhone', 'UbuntuTablet', 'WindowsPhone']

//提交布点方法

function playevent(json){
    //时间
    if(json.time == undefined){
        json.time = 'No Time';
    }
    //事件code,默认p.nw.pv
    if(json.code == undefined){
        json.code = 'p.nw.pv';
    }
    //来源页面flg
    if(json.flg == undefined){
        json.flg = 'No Flg';
    }
    //uuid
    if(json.uuid == undefined){
        json.uuid = 'No UUID'
    }
    //ip
    if(json.ip == undefined){
        json.ip = 'No IP'
    }
    //事件描述
    if(json.desc == undefined){
        json.desc = '|!|'
    }
//数据
var edata = json.time+','+json.code +',' + isPc() + ',' + getDeviceInfo(ua, mm) + ','+ isBrowser() + ',' + json.flg + ','+ sources() +',' + json.ip + ',' + json.uuid +','+ json.desc;

    console.log(edata)
//提交数据
    $.ajax({
        url : json.url,
        data : {"entCE.ceP0":"fitWeb","entCE.ceP1":edata},
        dataType : 'jsonp',
        success : function(){
            if(json.success != undefined){
                json.success();
            }
        }
    })
    //alert(edata)
}

//判断pc还是移动端,如果是移动端,是安卓还是苹果

function isPc() {
    if ((ua.match(/(Android|webOS|iPhone|iPad|iPod|BlackBerry|Windows Phone)/i))) {
        if (/iPhone|iPad|iPod/.test(ua)) {
            return 'ios'     
        } else if (/Android/.test(ua)) {
            return 'android'   
        }
    }else{
        return 'PC'
    }
}

//获取浏览器类型

function isBrowser(){
    if (ua.indexOf("Opera") > -1) {
        return "Opera浏览器"
    }; //判断是否Opera浏览器
    if (ua.indexOf("Firefox") > -1) {
        return "Firefox浏览器";
    } //判断是否Firefox浏览器
    if (ua.indexOf("Chrome") > -1){
      return "Chrome浏览器";
     }
    if (ua.indexOf("Safari") > -1) {
        return "Safari浏览器";
    } //判断是否Safari浏览器
    if (ua.indexOf("compatible") > -1 && ua.indexOf("MSIE") > -1 && !isOpera) {
        return "IE浏览器";
    }; //判断是否IE浏览器
    if (ua.match(/WeiBo/i) == "WeiBo") {
        return "WeiBo浏览器";
    }
    if (ua.match(/QQ/i) == "QQ") {
        return "QQ浏览";
    }
    if (ua.match(/MicroMessenger/i) == "MicroMessenger") {
        return "Weixin浏览器";
    }
    return '未知浏览器';
}

//获取来源渠道

function sources(){
    var f = getQueryString('f');
    if(f != null){
        return f;
    }
    var wxFrom = getQueryString('from');
    if(wxFrom != null){
        if(wxFrom == 'groupmessage'){
            return 'Wechat';
        }else if(wxFrom == 'singlemessage'){
            return 'Weixin';
        }

    }
    if(f == null && wxFrom == null){
        if (ua.match(/QQ/i) == "QQ") {
            return "QQ";
        }
        if (ua.match(/MicroMessenger/i) == "MicroMessenger") {
            return "Weixin";
        }
        return 'FitIdx'
    }
}

//获取手机品牌

function getDeviceInfo(ua, a) {
    var devices = a,
        device,
        c,
        i = 0;

    while (device = devices[i++]) {
        d = new RegExp("(" + device + ")", "i");
        if (d.test(ua.toLowerCase()))c = device;
    }

    switch (c) {
        case undefined:
            c = 'Android';
            break;
        case 'iPhone OS':
            c = 'iOS';
            break;
    }

    return c;
}

//获取url参数

function getQueryString(name) {
    var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');
    var r = window.location.search.substr(1).match(reg);
    if (r != null) {
        return unescape(r[2]);
    }
    return null;
}
### 如何判断程序运行是在PC还是移动 在Web开发中,区分PC和移动对于提供优化用户体验至关重要。通过JavaScript可以有效地识别用户的设备类型并据此调整应用行为。 #### 使用正则表达式匹配 `User-Agent` 一种常见方法是利用`navigator.userAgent`属性中的信息来推断客户环境: ```javascript created() { // 判断页面是否在手机端打开 const isMobile = /iPhone|iPad|iPod|Android/i.test(navigator.userAgent); if (isMobile) { console.log('当前在手机端'); window.location.href = '小程序链接'; } else { console.log('当前在PC'); } } ``` 这段代码会在创建组件实例时执行,检查用户代理字符串是否存在特定模式以指示移动操作系统[^1]。 #### 基于平台名称检测 另一种方式则是借助`navigator.platform`属性获取更具体的硬件或软件平台详情: ```javascript const platformCheck = () => { let platforms = {'MacIntel': false, 'Win32': false}; Object.keys(platforms).forEach(key => { if (navigator.platform === key){ platforms[key] = true; } }); return !Object.values(platforms).includes(true)?true:false; }; console.log(`Is Mobile? ${platformCheck()}`); ``` 此函数返回布尔值表示是否为非桌面平台(即可能是移动设备)。不过这种方法不如前者的覆盖面广,因为并非所有移动设备都会报告其确切型号[^3]。 #### ASP.NET 中的应用 对于服务器技术如ASP.NET而言,则可以通过相似的方式来进行初步筛选: ```csharp if(Regex.IsMatch(Request.UserAgent, "(android|bb\\d+|meego).+mobile|avantgo|" + "bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|" + "iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|" + "netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|" + "plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.browser|" + "up\\.link|vodafone|wap|windows ce|xda|xiino", RegexOptions.IgnoreCase | RegexOptions.Multiline)) { // 手机端逻辑 } else { // PC逻辑 } ``` 上述C#代码片段展示了如何基于请求头内的`User-Agent`字段决定响应策略[^4]。 综上所述,在不同编程环境中均存在有效手段用于判别终类别,开发者应根据实际需求选取最合适的方案实施差异化服务供给。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值