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

昨天有个站长找到我说,他想让网站在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)
} 
}

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/241543.html

(0)
上一篇 2022年4月7日
下一篇 2022年4月7日

相关推荐

发表回复

登录后才能评论