让代码更简单

JavaScript判断是否是QQ或者微信内置浏览器

重要:本文最后更新于2020-07-29 08:19:09,某些文章具有时效性,若有错误或已失效,请在下方留言或联系代码狗

昨天有个站长找到我说,他想让网站在QQ或者微信中打开时显示复制网址到浏览器打开的提示。这个效果实现很简单,因为不管是QQ还是微信都是使用的腾讯X5浏览内核,不知道什么是腾讯X5浏览内核的请看Android集成腾讯X5浏览内核。其标志是UA标识中带有qqbrowser,这个东西在电脑端的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;
}

判断不出来。

在QQ或者微信中存在如下特殊标识,XXX应该是版本号。

复制
MicroMessenger/xxx 
qq/xxx

正确写法

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

另外,使用微信访问网页时需要注意,alert弹出对话框可能会失效,当刷新当前网页时又是有效的情况。这种情况不用管它,我测试了下,其它的JavaScript代码仍然能正常运行。还有就是微信内置浏览会换成网页,你可能需要如下的代码禁止缓存。

head头部标签

复制
<meta HTTP-EQUIV="pragma" CONTENT="no-cache"> 
<meta HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate"> 
<meta HTTP-EQUIV="expires" CONTENT="0">

浏览器内部前进后退动作仍然执行js

复制
 window.onpageshow = function (e) {
if (e.persisted) {
window.location.reload(true)
} 
}

感觉很棒!可以赞赏支持我哟~

0 打赏

评论 (0)

登录后评论
QQ咨询 邮件咨询 狗哥推荐