js判断是否在微信或QQ中

本文介绍了一段用于识别浏览器环境的代码,特别是针对微信和QQ浏览器的判别问题进行了改进。原先的代码容易误将一些手机浏览器识别为QQ,通过调整正则表达式解决了这一问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前用网上现成的代码发现有很多浏览器被判别成QQ,像这样:

function is_weixn_qq(){
var ua = navigator.userAgent.toLowerCase();
if(ua.match(/MicroMessenger/i)=="micromessenger") {
return "weixin";
} else if (ua.match(/QQ/i) == "qq") {
return "QQ";
    }
return false;
}  

原因是一些手机浏览器navigator信息中会包含qqbrowser字符,因此被错判为QQ环境,通过分析不同环境下的navigator信息,微信和QQ环境下会包含如下的特征字符串:

MicroMessenger/xxx
qq/xxx
(xxx)疑似是版本号?

我们将原来代码中的正则表达式改为下面这样就行了:

if(ua.match(/MicroMessenger\/[0-9]/i)){
    return "weixin";
}

if(ua.match(/QQ\/[0-9]/i)){
    return "QQ";
}

扩展:为什么浏览器navigator中会出现其他浏览器的标识呢?
原因是以前不同的浏览器对特性的支持情况不同,因此在程序编写的时候开发人员会通过判断浏览器的类型,来决定网页要不要显示相关特性。而随着浏览器的发展,浏览器支持的特性越来越全,因此,为了告诉以前的网页“我是支持这些特性的”,浏览器开发者会在navigator字段添加其他浏览器的标签,从而避过页面开发人员的检测。有点像两边不断防御,不断破解的感觉,导致现在网上一些老的代码没法用,只能根据当前的实际情况自己编写代码。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值