判断操作系统和浏览器类型(苹果还是安卓,微信还是QQ)

2023-10-26

一、 获取操作系统类型

function getOS() {

  var userAgent = ("navigator" in window && "userAgent" in navigator && navigator.userAgent.toLowerCase()) || "";

  var vendor = ("navigator" in window && "vendor" in navigator && navigator.vendor.toLowerCase()) || "";

  var appVersion = ("navigator" in window && "appVersion" in navigator && navigator.appVersion.toLowerCase()) || "";

  if (/iphone/i.test(userAgent) || /ipad/i.test(userAgent) || /ipod/i.test(userAgent)) return "ios";

  if (/android/i.test(userAgent)) return "android";

  if (/win/i.test(appVersion) && /phone/i.test(userAgent)) return "windowsPhone";

  if (/mac/i.test(appVersion)) return "MacOSX";

  if (/win/i.test(appVersion)) return "windows";

  if (/linux/i.test(appVersion)) return "linux";

}

二、 判断是否在微信浏览器 

function isWeiXinBrowser() {

    // #ifdef H5

    // window.navigator.userAgent属性包含了浏览器类型、版本、操作系统类型、浏览器引擎类型等信息,这个属性可以用来判断浏览器类型

    let ua = window.navigator.userAgent.toLowerCase()

    // 通过正则表达式匹配ua中是否含有MicroMessenger字符串

    if (ua.match(/MicroMessenger/i) == 'micromessenger') {

        return true

    } else {

        return false

    }

    // #endif

    return false

}

三、是否在QQ内置浏览器

function isQQBrowser() {

  /* #ifdef H5 */

  var ua = navigator.userAgent.toLowerCase()

  if (ua.indexOf(' qq') > -1 && ua.indexOf('mqqbrowser') > -1) {

      //" qq"和"mqqbrowser"字符串都存在

      return true

  } else {

      return false

  }

  /* #endif */

  return false

}

   

或者:

    var u = navigator.userAgent;

    var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android终端

    var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

判断操作系统和浏览器类型(苹果还是安卓,微信还是QQ) 的相关文章

  • appcompat-v7:21.0.0': 找不到与给定名称匹配的资源:attr 'android:actionModeShareDrawable'

    当尝试在我的项目中使用最新的 appcompat v7 支持库时 出现以下错误 Users greg dev mobile android project app build intermediates exploded aar com a
  • 通过观察ViewModel在RecyclerView中搜索PagedList的LiveData

    使用 android Paging 库 可以很容易地从数据库中分块加载数据 并且 ViewModel 提供自动 UI 更新和数据保存 所有这些框架模块帮助我们在 Android 平台上创建一个出色的应用程序 典型的 Android 应用程序
  • 设置子视图以适合系统窗口

    我正在设置一个简单的视图 其中仅包含一个空的RelativeLayout
  • android服务的onCreate未调用

    我想以静态方式启动服务 所以从我的活动中我打电话 SpeechActivationService makeStartServiceIntent this getApplicationContext WordActivator 这是从服务类扩
  • startAfter 在 Firestore android 中不起作用

    我创建了一个类似测验的应用程序 一次提取 10 个问题 如果用户得到 8 分 满分 10 分 那么我会获取接下来的 10 个问题 但开始之后总是给出相同的回应 val questionCollectionRef db collection
  • 模拟器未运行

    在我将硬盘更换为另一个 MotherBoard i5 3GHz 处理器而未重新安装操作系统后 我的 AVD 模拟器无法运行 操作系统 Ubuntu 10 10 我的模拟器没有通过 Eclipse 运行 当我单击 Run As Android
  • Android 数据库 - 无法执行此操作,因为连接池已关闭

    我对 android 数据库和游标有奇怪的问题 有时 很少 发生 我收到客户的崩溃报告 很难找出它崩溃的原因 因为我有大约 150 000 个活跃用户 可能每周大约有 1 个报告 所以这确实是一些小错误 这是例外 STACK TRACE j
  • 将 OnItemSelectedListener 添加到 Spinner

    我有一个按钮和一个微调器 最初是隐藏的 当用户按下按钮时 微调器会填充项目并变得可见 现在我想将 OnItemSelectedListener 添加到微调器中 我尝试了很多教程但没有运气 这是我的 OnCreate 函数 public vo
  • 具有多列的 ORMLITE ORDER_BY

    我在用ormlite在我最近的android项目中 我想对表中多列 比如两列 的查询进行排序 我怎样才能做到这一点 这是单个订单的代码 QueryBuilder
  • 单击网格视图时如何将数组列表(位置)发送到另一个活动

    在这种方法中我收到ArrayList OkHttpHandler handler new OkHttpHandler MainActivity this new OkHttpHandler MyInterface Override publ
  • androidcamera2中的曝光补偿方法

    我是安卓新手 在相机中 我用过params getMinExposureCompensation以获得最小亮度 如何在 Camera2 中做到这一点 任何例子将不胜感激 Thanks 可用的曝光补偿范围由CameraCharacterist
  • 如何将子集合添加到 Firebase Cloud Firestore 中的文档

    该文档没有任何有关如何将子集合添加到文档的示例 我知道如何将文档添加到集合以及如何将数据添加到文档 但是如何将集合 子集合 添加到文档 难道不应该有这样的方法 dbRef document example addCollection sub
  • 如何在Android Studio中导入java包

    我是 android 新手 我想将 jfftpack 导入到 android studio 中的项目中 但我不知道如何导入它 原始代码是 import ca uol aig realdoublefft 我不知道将 java 文件放在哪里 我
  • 如何在 Android 中创建 https 连接?

    我在 Stackoverflow 中找到了很多帖子 但无法找到适用的解决方案 如何在 Android 中创建 https 连接 代码是 HttpParams httpParameters new BasicHttpParams ConnMa
  • 如何在 Android 中强制蓝牙 LE“正常工作”配对

    我有一个运行 GATT 服务器的嵌入式系统 我尝试通过 Android 连接该服务器 任务很简单 连接到 GATT 服务器 导航特征并验证读 写功能 问题是当我尝试连接 Android 应用程序时 它尝试与 Passkey 而不是 Just
  • 从 URL 中删除特殊字符

    我想删除网址中的任何特殊字符 我尝试使用 StringEscapeUtils 类来删除特殊字符 但那没有用 例如 http 3A 2Ffeeds feedburner com 2FNdtvNews TopStories 欢迎任何想法 我过去
  • 在 API 21 中 EditText 填充不起作用

    在 API 21 中 EditText 填充不起作用 我尝试在空项目中执行此操作 仅使用单个 editText 但它仍然不起作用 以编程方式设置填充是可行的 但在我的工作项目中 我有很多具有不同填充的 EditText 并且以编程方式设置填
  • Android TimePickerDialog 样式指南/文档?

    我正在尝试为 sdk 21 Lollipop 设置 TimePickerDialog 的样式 到目前为止 我已经弄清楚如何更改 XML 中的默认颜色方案
  • 制作自定义 Android 闹钟以进行提醒

    我正在制作药物提醒应用程序 在该应用程序中 我添加了添加有关医生预约提醒的功能 在我的应用程序中 允许用户设置他 她自己的日期和时间 并且在该日期和时间应该触发警报 请帮助我 我已从此线程中参考 如何在Android中设置闹钟 https
  • 无法展开 RemoteView

    我尝试创建自定义通知 但出现以下异常 FATAL EXCEPTION main android app RemoteServiceException Bad notification posted from package com my a

随机推荐

  • 豆瓣读书top250数据爬取与可视化

    爬虫 scrapy 题目 根据豆瓣读书top250 根据出版社对书籍数量分类 绘制饼图 搭建环境 import scrapy import numpy as np import pandas as pd import matplotlib
  • UE5《Electric Dreams》项目PCG技术解析 之 PCGCustomNodes详解(三)SG_CopyPointsWithHierarchy

    继续解析 Electric Dreams 项目中的自定义节点和子图 SG CopyPointsWithHierarchy和PostCopyPoints OffsetIndices 文章目录 前导文章 标准组合拳 SG CopyPointsW
  • STM32开发中各库函数的主要作用和关系。

    STM32开发中各库函数的主要作用和关系 STM32各库函数关系的简单解析 您好 这是我第一次使用 CSDN来发布文章 如果有排版不合理 结构凌乱 欢迎私信我交流经验 文章内容如有错误 欢迎读者指正 首先我们了解一下什么是库函数 众所周知
  • 常见的几种开源协议

    在学习中经常能看到一些词 例如 GPL LGPL等等 自打上学那会就遇见过 对它们的具体含义却不了解 今天给它们总结一下 说到开源协议 不得不提GNU 课本上给的定义是 GNU is Not Unix 这是官方给出的递归定义 永远也找不到本
  • Linux基础服务3——samba

    文章目录 一 基本了解 1 1 服务安装 1 2 服务进程和端口 1 3 samba用户 1 4 配置文件 1 4 1 主配置文件 1 4 2 配置文件参数 1 5 安全级别 二 访问samba 2 1 参数测试 2 2 交互式访问 2 3
  • 多线程进阶学习10------AQS详解

    AbstractQueuedSynchronizer 来自于JDK1 5 位于JUC包 由并发编程大师Doug Lea编写 字面翻译就是 抽象队列同步器 简称为AQS AQS作为一个抽象类 是构建JUC包中的锁 比如ReentrantLoc
  • Netty工作原理最详细分析

    NIO通讯服务端步骤 1 创建ServerSocketChannel 为它配置非阻塞模式 2 绑定监听 配置TCP参数 录入backlog大小等 3 创建一个独立的IO线程 用于轮询多路复用器Selector 4 创建Selector 将之
  • 面试嵌入式工程师过程中的常见问题和回答

    1 请介绍一下你的嵌入式系统开发经验 an 首先 回答此类问题时应该尽可能地详细和具体 可以从以下方面介绍自己的嵌入式系统开发经验 1 开发环境和工具 介绍自己使用过哪些开发环境和工具 例如Keil IAR Eclipse等 可以说明自己对
  • Java之变量、标识符、保留字、变量

    文章目录 1 关键字与保留字 2 标识符 2 1 什么是标识符 Identifier 2 2 定义合法标识符规则 重要 2 3 Java 中的名称命名规范 3 变量 3 1 变量的声明与使用 3 2 基本数据类型 3 2 1 整数类型 by
  • Java---TCP通信

    目录 1 TCP通信 快速入门 编写客户端代码 步骤 客户端发送消息 总结 需求 服务端实现步骤 总结 2 TCP通信 多发多收消息 案例 使用TCP通信实现 多发多收消息 总结 3 TCP通信 同时接受多个客户端消息 重点 总结 4 TC
  • 简单解析transformer代码

    详解transformer代码 文章目录 详解transformer代码 1 代码下载 2 prepro py 2 1 首先进行语料预处理阶段 2 2 生成预处理过后的对应数据集 2 3 sentencepiece处理 3 data loa
  • 028-从零搭建微服务-搜索服务(二)

    写在最前 如果这个项目让你有所收获 记得 Star 关注哦 这对我是非常不错的鼓励与支持 源码地址 后端 https gitee com csps mingyue 源码地址 前端 https gitee com csps mingyue u
  • FISCO BCOS节点扩容和使用console进行群组扩容

    一 安装并启动FISCO BCOS 搭建单机单群组4节点的教程查看 https blog csdn net yueyue763184 article details 128924144 spm 1001 2014 3001 5501 二 下
  • 最小优先级队列 — 使用最小堆实现

    最小优先级支持的操作 1 INSERT S x 将元素x插入队列S 2 MINIMUM S 返回S中最小的元素 3 EXTRACT MIN S 去掉并返回S中最小的元素 4 DECREASE KEY S x key 将下标为x的元素值降低为
  • 获得代理ippython_python爬虫之抓取代理服务器IP

    前言 使用爬虫爬取网站的信息常常会遇到的问题是 你的爬虫行为被对方识别了 对方把你的IP屏蔽了 返回不了正常的数据给你 那么这时候就需要使用代理服务器IP来伪装你的请求了 免费代理服务器网站有 下面我们以西刺免费代理IP为例子看看是如何获取
  • ArcGISMapsSDK for UnrealEngine_AQ

    ArcGISMapsSDK for UnrealEngine AQ Prepare 1 ArcGIS Maps SDK for game engines 2 ArcGIS Maps SDK for Unreal Engine Beta 2
  • jQuery 的 DOM 操作- 中

    文章目录 jQuery 的 DOM 操作 中 复制节点 复制节点介绍 复制节点 应用实例 替换节点 替换节点介绍 替换节点 应用实例 属性操作 样式操作 样式操作介绍 应用实例 jQuery 的 DOM 操作 中 注意本篇和jQuery 的
  • 【java】常用到的一些获取文件内容的方法

    一 前奏准备 获取文件名 根据文件名获取路径 文件路径名 String path public String getPath return path 根据路径获取文件名 return 文件名字符串 public String fileNam
  • Cocos 2dx iOS 平台初始化,OpenGL 初始化,分辨率设置

    Cocos 2dx iOS 平台初始化 OpenGL 初始化 分辨率设置 1 Main m int retVal UIApplicationMain argc argv nil AppController AppController mm
  • 判断操作系统和浏览器类型(苹果还是安卓,微信还是QQ)

    一 获取操作系统类型 function getOS var userAgent navigator in window userAgent in navigator navigator userAgent toLowerCase var v