首页 > 微信 > 详细

JS - 定制功能(1): 判断是否是微信浏览器

时间:2021-06-30 21:08:05      阅读:27      评论:0      收藏:0      [点我收藏+]

最近半年来一直在微信小程序,微信公众号打转,小程序就不说了,跟这个没得关系,公众号页面以及一些附属的H5页面,很多时候会通过微信直接分享出去。虽然公众号页面也是H5网页,但有时候又是特殊的H5页面,特殊就特殊在只能微信浏览器内打开,在其他浏览器或其他应用的浏览器打开有些功能无法正常使用;而且还可能存在一些其他定制功能,又只能在桌面浏览器内打开等等,总之一句话:就是要判定网页打开的运行环境

具体通过判断navigator对象内userAgent中是否存在关键字micromessenger,存在则是微信内置浏览器,反之不是。

function isWeChat() {
  let ua = window.navigator.userAgent.toLowerCase();
  return ua.match(/MicroMessenger/i) == "micromessenger"; // 判定为true则是微信浏览器,false则不是
}

也可以写成

function isWeChat() {
  let ua = window.navigator.userAgent.toLowerCase();
  if (ua.match(/MicroMessenger/i) == "micromessenger") {
    return true;// 是微信浏览器
  } else {
    return false;// 不是
  }
}

 

升级版,上面的代码只能判定当前环境是否是微信浏览器,对于其他的,如:是否是移动端浏览器还是PC端浏览器,则无能为力。

function judgeEnv() {
  var system = {
    win: false,
    mac: false,
    xll: false,
    ipad: false
  };
  // 检测网页运行平台
  var p = window.navigator.platform;
  system.win = p.indexOf("Win") == 0; // windows
  system.mac = p.indexOf("Mac") == 0; // 苹果
  system.x11 = p == "X11" || p.indexOf("Linux") == 0; // Linux
  system.ipad = navigator.userAgent.match(/iPad/i) != null ? true : false;  // iPad

  if (system.win || system.mac || system.xll || system.ipad) {  // 在PC端上打开的
    return system;
  } else {  // 在手机端打开的则直接跳转到wap.baidu.com页面
    var ua = window.navigator.userAgent.toLowerCase();
    if (ua.match(/MicroMessenger/i) == "micromessenger") {  // 在手机端微信上打开的(注:这里不能用===,具体看打印)
      return true;
    } else {  // 在手机上非微信上打开的
      return false;
    }
  }
}

这个升级版也只是初级升级,如果要更加细致化的升级,PC端还得判定是什么浏览器(或什么内核的浏览器),如:IE,谷歌,火狐等等,以及国内的360,QQ,百度等等。

 

最后:由于这类运行环境(平台)的判定实际上是一次性的东西,也就页面打开时判定一次就够了,后面基本都用不上了,不需要每个页面都判定(特定页面定制执行环境除外)。

JS - 定制功能(1): 判断是否是微信浏览器

原文:https://www.cnblogs.com/donghuang/p/14954329.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!