JS简单判断是否在微信浏览器打开的方法示例


Posted in Javascript onJanuary 08, 2019

本文实例讲述了JS简单判断是否在微信浏览器打开的方法。分享给大家供大家参考,具体如下:

最近做很多HTML5的项目,很多页面会通过微信微博等SNS分享出去。在分享页面上提供公司APP的下载。但是在很多应用的浏览器中,点击下载链接无法下载应用。那么针对这些浏览器我们需要给用户提示从safari或者系统自带的浏览器打开分享页面。通过js就可以判断当前页面是在什么浏览器打开的。

<script>
    var ua = navigator.userAgent.toLowerCase();
    var isWeixin = ua.indexOf('micromessenger') != -1;
    if (!isWeixin) {
      window.location.href = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=888"
    }
</script>

只要不是在微信内部打开网页的,就会跳转提示页面,appid必写,可随意写,也可以写已获取的。

还是觉得跳转比较好,防止别人查看自己的代码。

以下是一段示例代码,注释中表明了通过JS如何判断是否在微信浏览器打开,是否在QQ空间浏览器,是否在新浪微博打开。当然可以做得更完善一点,再加上判断是在移动设备打开还是在PC端浏览器打开的,更加细分一点,可以判断是在安卓系统的浏览器打开的还是IOS系统浏览器打开的。

if (browser.versions.mobile) {//判断是否是移动设备打开。browser代码在下面
 var ua = navigator.userAgent.toLowerCase();//获取判断用的对象
 if (ua.match(/MicroMessenger/i) == "micromessenger") {
  //在微信中打开
 }
 if (ua.match(/WeiBo/i) == "weibo") {
  //在新浪微博客户端打开
 }
 if (ua.match(/QQ/i) == "qq") {
  //在QQ空间打开
 }
 if (browser.versions.ios) {
  //是否在IOS浏览器打开
 }
 if(browser.versions.android){
  //是否在安卓浏览器打开
 }
} else {
 //否则就是PC浏览器打开
}

再附上browser的代码,通过以下方法可以判断很多浏览器。包括判断IE浏览器,Opera浏览器,苹果浏览器,谷歌浏览器,火狐浏览器等。

var browser = {
 versions: function () {
 var u = navigator.userAgent, app = navigator.appVersion;
 return {  //移动终端浏览器版本信息
  trident: u.indexOf('Trident') > -1, //IE内核
  presto: u.indexOf('Presto') > -1, //opera内核
  webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核
  gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, //火狐内核
  mobile: !!u.match(/AppleWebKit.*Mobile.*/), //是否为移动终端
  ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端
  android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //android终端或uc浏览器
  iPhone: u.indexOf('iPhone') > -1, //是否为iPhone或者QQHD浏览器
  iPad: u.indexOf('iPad') > -1, //是否iPad
  webApp: u.indexOf('Safari') == -1 //是否web应该程序,没有头部与底部
 };
 }(),
 language: (navigator.browserLanguage || navigator.language).toLowerCase()
}
Javascript 相关文章推荐
如何简单地用YUI做JavaScript动画
Mar 10 Javascript
解决jquery submit()提交表单提示:f[s] is not a function
Jan 23 Javascript
javascript预加载图片、css、js的方法示例介绍
Oct 14 Javascript
Jquery ajaxStart()与ajaxStop()方法(实例讲解)
Dec 18 Javascript
jQuery构造函数init参数分析续
May 13 Javascript
js密码强度检测
Jan 07 Javascript
微信小程序  网络请求API详解
Oct 25 Javascript
原生js实现商品放大镜效果
Jan 12 Javascript
Vue 2.0学习笔记之Vue中的computed属性
Oct 16 Javascript
vue源码入口文件分析(推荐)
Jan 30 Javascript
Vue 组件传值几种常用方法【总结】
May 28 Javascript
vue实现编辑器键盘抬起时内容跟随光标距顶位置向上滚动效果
May 28 Javascript
JQuery搜索框自动补全(模糊匹配)功能实现示例
Jan 08 #jQuery
Angular6 发送手机验证码按钮倒计时效果实现方法
Jan 08 #Javascript
Angular6 用户自定义标签开发的实现方法
Jan 08 #Javascript
JS实现的获取银行卡号归属地及银行卡类型操作示例
Jan 08 #Javascript
关于微信小程序登录的那些事
Jan 08 #Javascript
Vue2.x Todo之自定义指令实现自动聚焦的方法
Jan 08 #Javascript
关于React动态加载路由处理的相关问题
Jan 07 #Javascript
You might like
超外差式晶体管收音机的组装与统调
2021/03/01 无线电
PHP IN_ARRAY 函数使用注意事项
2010/07/24 PHP
Laravel5.0+框架邮件发送功能实现方法图文与实例详解
2019/04/23 PHP
鼠标滑上去后图片放大浮出效果的js代码
2011/05/28 Javascript
jQuery EasyUI API 中文文档 - PropertyGrid属性表格
2011/11/18 Javascript
js通过更改按钮的显示样式实现按钮的滑动效果
2014/04/23 Javascript
javascript数组排序汇总
2015/07/07 Javascript
JQuery移动页面开发之屏幕方向改变与滚屏的实现
2015/12/03 Javascript
深入理解Javascript中的作用域链和闭包
2017/04/25 Javascript
javascript实现二叉树遍历的代码
2017/06/08 Javascript
温故知新——JavaScript中的字符串连接问题最全总结(推荐)
2017/08/21 Javascript
对存在JavaScript隐式类型转换的四种情况的总结(必看篇)
2017/08/31 Javascript
node.js中TCP Socket多进程间的消息推送示例详解
2018/07/10 Javascript
js运算符的一些特殊用法
2018/07/29 Javascript
微信小程序网络请求实现过程解析
2019/11/06 Javascript
[55:16]Mski vs VGJ.S Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
[51:26]VP vs VG 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
详解python时间模块中的datetime模块
2016/01/13 Python
python中urllib.unquote乱码的原因与解决方法
2017/04/24 Python
Python爬虫DOTA排行榜爬取实例(分享)
2017/06/13 Python
Python tkinter实现的图片移动碰撞动画效果【附源码下载】
2018/01/04 Python
Python 网络编程之TCP客户端/服务端功能示例【基于socket套接字】
2019/10/12 Python
pandas实现DataFrame显示最大行列,不省略显示实例
2019/12/26 Python
python3实现往mysql中插入datetime类型的数据
2020/03/02 Python
python实现批量修改文件名
2020/03/23 Python
奢华时尚的独特视角:La Garçonne
2018/06/07 全球购物
网络教育自我鉴定
2013/11/01 职场文书
《放飞蜻蜓》教学反思
2014/04/27 职场文书
小学校园广播稿集锦
2014/10/04 职场文书
音乐教师求职信范文
2015/03/20 职场文书
如何书写先进事迹材料?
2019/07/02 职场文书
python 实现两个变量值进行交换的n种操作
2021/06/02 Python
浅谈Go语言多态的实现与interface使用
2021/06/16 Golang
使用javascript解析二维码的三种方式
2021/11/11 Javascript
Windows Server 2019 域控制器安装图文教程
2022/04/28 Servers
生命的关键成分来自太空?陨石说是的
2022/04/29 数码科技