js检测浏览器内核、版本号

2023-05-16

js检测浏览器内核、版本号

 function isBroswer () {//检测浏览器内核--返回的是两个key,name:浏览器内核的名称---version:浏览器的版本号
            var _broswer = {};
            var sUserAgent = navigator.userAgent;
            var isOpera = sUserAgent.indexOf("Opera") > -1;
            if (isOpera) {
                //首先检测Opera是否进行了伪装
                if (navigator.appName == 'Opera') {
                    //如果没有进行伪装,则直接后去版本号
                    _broswer.version = parseFloat(navigator.appVersion);
                } else {
                    var reOperaVersion = new RegExp("Opera (\\d+.\\d+)");
                    //使用正则表达式的test方法测试并将版本号保存在RegExp.$1中
                    reOperaVersion.test(sUserAgent);
                    _broswer.version = parseFloat(RegExp['$1']);
                }
                _broswer.opera = true;
                _broswer.name = 'opera';
            }
            var isChrome = sUserAgent.indexOf("Chrome") > -1;
            if (isChrome) {
                var reChorme = new RegExp("Chrome/(\\d+\\.\\d+(?:\\.\\d+\\.\\d+))?");
                reChorme.test(sUserAgent);
                _broswer.version = parseFloat(RegExp['$1']);
                _broswer.chrome = true;
                _broswer.name = 'chrome';
            }
            //排除Chrome信息,因为在Chrome的user-agent字符串中会出现Konqueror/Safari的关键字
            var isKHTML = (sUserAgent.indexOf("KHTML") > -1
                || sUserAgent.indexOf("Konqueror") > -1 || sUserAgent
                    .indexOf("AppleWebKit") > -1)
                && !isChrome;
            if (isKHTML) {//判断是否基于KHTML,如果时的话在继续判断属于何种KHTML浏览器
                var isSafari = sUserAgent.indexOf("AppleWebKit") > -1;
                var isKonq = sUserAgent.indexOf("Konqueror") > -1;
                if (isSafari) {
                    var reAppleWebKit = new RegExp("Version/(\\d+(?:\\.\\d*)?)");
                    reAppleWebKit.test(sUserAgent);
                    var fAppleWebKitVersion = parseFloat(RegExp["$1"]);
                    _broswer.version = parseFloat(RegExp['$1']);
                    _broswer.safari = true;
                    _broswer.name = 'safari';
                } else if (isKonq) {
                    var reKong = new RegExp(
                        "Konqueror/(\\d+(?:\\.\\d+(?\\.\\d)?)?)");
                    reKong.test(sUserAgent);
                    _broswer.version = parseFloat(RegExp['$1']);
                    _broswer.konqueror = true;
                    _broswer.name = 'konqueror';
                }
            }
            // !isOpera 避免是由Opera伪装成的IE
            var isIE = sUserAgent.indexOf("compatible") > -1
                && sUserAgent.indexOf("MSIE") > -1 && !isOpera;
            if (isIE) {
                var reIE = new RegExp("MSIE (\\d+\\.\\d+);");
                reIE.test(sUserAgent);
                _broswer.version = parseFloat(RegExp['$1']);
                _broswer.msie = true;
                _broswer.name = 'msie';
            }
            // 排除Chrome 及 Konqueror/Safari 的伪装
            var isMoz = sUserAgent.indexOf("Gecko") > -1 && !isChrome && !isKHTML;
            if (isMoz) {
                var reMoz = new RegExp("rv:(\\d+\\.\\d+(?:\\.\\d+)?)");
                reMoz.test(sUserAgent);
                _broswer.version = parseFloat(RegExp['$1']);
                _broswer.mozilla = true;
                _broswer.name = 'mozilla';
            }
            return _broswer;
        }
// 调用
        /**返回的是两个key,name:浏览器内核的名称---version:浏览器的版本号*/

如果大家嫌弃上面代码太冗余的话,还可以这么使用见下面代码:
效果图:
这里写图片描述

 var theUA = window.navigator.userAgent.toLowerCase();
    if ((theUA.match(/msie\s\d+/) && theUA.match(/msie\s\d+/)[0]) || (theUA.match(/trident\s?\d+/) && theUA.match(/trident\s?\d+/)[0])) {
        var ieVersion = theUA.match(/msie\s\d+/)[0].match(/\d+/)[0] || theUA.match(/trident\s?\d+/)[0];
        if (ieVersion < 9) {
            var str = "你的浏览器版本太低了,请升级您的浏览器";
            var str2 = "<h2 style='font-weight:900;padding:10px 0;'>推荐使用:<a href='https://www.baidu.com/s?ie=UTF-8&wd=%E8%B0%B7%E6%AD%8C%E6%B5%8F%E8%A7%88%E5%99%A8' target='_blank' style='color:#ffffff;'>谷歌</a>,"
                + "<a href='https://www.baidu.com/s?ie=UTF-8&wd=%E7%81%AB%E7%8B%90%E6%B5%8F%E8%A7%88%E5%99%A8' target='_blank' style='color:#ffffff;'>火狐</a>,"
                + "或其他双核极速模式</h2>";
            document.writeln("<pre style='font-size:25px;text-align:center;color:#fff;background-color:#0cc; height:100%;border:0;position:fixed;top:0;left:0;width:100%;z-index:1234'>" +
                "<h2 style='padding-top:200px;margin:0'><strong>" + str + "<br/></strong></h2><h2>" +
                str2 + "</h2><h2 style='margin:0'><strong>如果您的使用的是360、搜狗、QQ等双核浏览器,请在最顶部切换到极速模式访问<br/></strong></h2>" +
                "<img src='../images/iechange.png' style='width:315px;height:200px;margin-top:10px;'></pre>");
            document.execCommand("Stop");
        }
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

js检测浏览器内核、版本号 的相关文章

  • 对PX4参数THR_MDL_FAC的理解

    对参数THR MDL FAC的理解 home wp src PX Firmware src lib mixer module mixer module hpp 这里引入了参数THR MDL FAC的使用 DEFINE PARAMETERS
  • TX2安装ubuntu18,ROS

    设备 TX2 8G版本 ubuntu18 04笔记本一台 重要提示 请看完全文再安装 xff01 本文不是手把手教你安装类型教程 给TX2刷系统 看看我的参考博客1吧 最好参考最新的博客 xff0c 现在官网的新版本都不是这样 JetPac
  • px4的PWM是如何输出的

    如果有io芯片 xff0c 且使用了io作为输出PWM的设备 则fmu将mixer传输给io xff0c io进行混控计算并输出PWM xff0c 将pwm结果传递回fmu xff0c 此时无app订阅acuator outpus xff0
  • PX4的mix文件是怎么被使用的呢?

    启动 怎么到启动这里的就不说了 2 作为MIXER FILE被mixer load的 src systemcmds mixer mixer cpp实现mixer load Mixer load调用函数 xff1a load const ch
  • 诚迈科技发布OpenHarmony发行版鸿诚志远HongZOS

    2022年11月3日 xff0c 诚迈科技在东莞松山湖举办 鸿雁于飞 至诚志远 开源鸿蒙 诚迈科技HongZOS发布会 xff0c 发布基于OpenHarmony的商业发行版鸿诚志远 xff08 HongZOS xff09 xff0c 并推
  • PX4阅读开发小技巧

    1 基操 本文件搜索 全局搜索 后退 前进 ctrl 43 p xff0c 搜索文件名 右键 xff0c 书签功能 ctrl 43 单击 F12 xff0c 转到定义 大纲视图 vscode的Open Folder插件搜索文件夹名 2 利用
  • 一种基于接触性检查的全方位空中操作平台

    这里写自定义目录标题 摘要简介相关工作系统描述控制架构A 系统模型B 外部力估计C Interaction Control Selective Impedance 交互作用控制 xff1a 选择性阻抗D Surface Normal and
  • PX4的代码测试

    PX4的代码测试 写完代码总要测试一下吧 xff0c 自己先测试一下 xff0c 怎么用Test呢 xff1f 官方关于测试的概括说明 xff1a Platform Testing and Continuous Integration PX
  • CMAKE学习

    官方学习资料 系统的学习还是看官方资料为好 CMake Reference Documentation CMake 3 23 1 Documentation https cmake org cmake help latest Documen
  • QNAP威联通配置docker下的mysql外部网络访问问题

    QNAP的ContainerStation的mysql 容器默认配置是NAT网络是不行的 直接把mysql容器的网络设置改成host并重启 xff0c 就可以在外部连入了 注意需要设置容器的环境变量来配置root密码 需要配置下 MYSQL
  • Python数据可视化教程之基础篇

    点击上方 AI遇见机器学习 xff0c 选择 星标 公众号 重磅干货 xff0c 第一时间送达 开运张 作者 知乎专栏 来源 https zhuanlan zhihu com p 55642042 经过学习之后 xff0c 我总结了利用py
  • 终身学习楷模!吴恩达74岁父亲8年完成146门课

    点击上方 AI遇见机器学习 xff0c 选择 星标 公众号 重磅干货 xff0c 第一时间送达 学习真谛和乐趣在于保持敏锐的头脑 xff0c 以及发现美的能力 作者 贝爽 我们需要保持精神年轻 xff0c 保持好奇心 这是一位74岁老先生的
  • 通过CMakeLists.txt和shell脚本实现自动化编译

    这是项目的整个目录结构 span class hljs comment 此种方式配置犹如Vs中的配置一样 span span class hljs comment CMakeLists file span span class hljs k
  • MAC 安装JD-GUI

    今天升级MAC系统到最新版本 12 0 1 xff0c 然后突然发现JD GUI xff08 v 1 6 xff09 运行不了了 然后就删除重新下载新的 xff0c 发现还是不行 xff0c 在网上搜资料 xff0c 都说需要修改运行文件
  • mysql使用笔记

    创建数据库 create database database name 删除数据库 drop database database name 创建表 span class token comment 最简单的语法 span span clas
  • 华为携手去哪儿、九牧等企业,共论鸿蒙生态发展蓝图

    11月5日 xff0c 在华为开发者大会2022 xff08 Together xff09 上 xff0c 华为携手中软国际 九牧集团 深开鸿 开鸿智谷 去哪儿 鸿湖万联6家鸿蒙合作伙伴代表 xff0c 分享了基于OpenHarmony技术
  • 桌面客户端框架技术选型

    摘自 技术怪咖 欧阳森林 作为客户端的架构选型主要面临以下几个方面的需求 xff1a 1 开发速度快 xff0c 能够快速迭代 xff0c 快速试错 2 客户端能够跨平台 xff0c 同时适应Windows和Mac平台 3 用户界面友好 x
  • python金融数据爬虫与数据分析学习(一)

    本文针对以下链接进行学习 链接 爬取东方财富网上的股票信息 由于后来发现爬的都是指数基金的股票 xff0c 便转向观看其它文章 目前发现一个比较好的python开源的财经数据包接口 xff0c Tushare Tushare简介 Tusha
  • 股票基础知识

    股票基础知识 定义沪股通 深股通 港股通动态市盈率 静态市盈率 TTM市盈率量比股息率前十大股东与前十大流动股东区别 tushare可以获取的信息日线行情每日指标个股资金流向沪深港股通持股明细沪深港通每日整体资金流向每日涨跌停统计港股通十大
  • kubernetes安装部署

    k8s是一款辅助管理容器的平台 负责容器的部署 xff0c 扩缩容和负载均衡 k8s集群是有master节点和work节点组成 xff0c master 一个 是主节点 xff0c 负责管理和控制 work是工作节点 xff08 很多 xf

随机推荐

  • js 中set去重并转为数组

    const items 61 new Set 1 2 3 4 5 5 去重 const array1 61 items 2 转成数组
  • fast lio测试

    fast lio2代码编译及运行 编译 fast lio2仓库地址 一 安装依赖 ubuntu18 43 ros环境下 xff0c pcl和eigen可默认使用ros自带版本 xff0c 所以只需安装 livox驱动包 livox ros
  • 机器人开发常见第三方库、软件安装和使用

    写在前面 大多数情况下 xff0c 没有人比官方更懂官方 xff0c 所以编译安装 库配置及简单使用优先看官方github仓库README或者官网 xff0c 当然不排除有些博文或者教程有更好的表达方式更详细的说明cmake 编译三件套 通
  • Android UDP 通信总结 (终于从坑中爬起来了)

    2018 08 02 最近做的项目要求为 xff1a 一端为电视端 xff0c 一端为手机端 xff0c 实现电视端与手机端通过UDP进行通信 解释 xff1a 就是两个机器在同一个局域网内 xff08 即两端连接的同一个WiFi xff0
  • ES6之Promise常见面试题

    ES6 谈一谈 promise 所有的 ES6 特性你都知道吗 xff1f 如果遇到一个东西不知道是 ES6 还是 ES5 你该怎么区分它 es6的继承和es5的继承有什么区别 promise封装ajax let const的优点 es6
  • docker容器内关于pip的trick

    在运行某个文本检测算法的时候 xff0c 运行setup py脚本 xff0c 生成了dist目录 xff0c 且在此目录下生成了 dlocr 0 1 SNAPSHOT tar gz文件夹 下一步需要pip install dlocr 0
  • 用两台TFmini Plus实现PPT切换

    1 PPT自动切换模块简介 本模块利用北醒公司两台TFmini Plus Arduino DUE板 一个低功率红外激光指向灯 两个LED指示灯 一个单向开关 一个双向开关和连接线结合设计 系统作用 xff1a 通过检测人的手势 xff0c
  • 用两台TFmini Plus实现 PPT切换

    1 PPT自动切换模块简介 本模块利用北醒公司两台TFmini Plus Arduino DUE板 一个低功率红外激光指向灯 两个LED指示灯 一个单向开关 一个双向开关和连接线结合设计 系统作用 xff1a 通过检测人的手势 xff0c
  • TFmini-Plus在Arduino上的开发例程

    TFmini Plus在Arduino上的开发例程 本例程以Arduino Uno 和 DUE板作为示例 xff0c 主要帮助客户快速熟悉我公司雷达 xff0c 减少产品的研发周期 关于Arduino的详细介绍请参考以下网站 xff1a 英
  • TFmini 常见问题与解答

    TFmini 是一款小型激光雷达模组 主要实现实时 无接触式的距离测量功能 xff0c 具有测量准确 稳定 高速的特点 TFmini常见问题与解答 Q xff1a 请问TFmini是否可以在水面检测 xff1f A xff1a 不建议在水面
  • TFmini和TFmini-Plus——激光雷达模组 资料汇总

    本文主要介绍TFmini和TFmini Plus激光雷达相关资料 目录 产品基本介绍产品基本FAQ与开源硬件的基本匹配其他 xff08 I C版参考方案 xff09 应用方案 一 产品基本介绍 产品规格书 产品使用说明等有关下载地址 xff
  • 使用数传电台无线远程传输雷达数据的参考方案

    本文介绍使用数传电台无线远程传输雷达数据的参考方案 方案概述 本方案为使用数传电台方式无线远程传输北醒TF系列雷达数据的参考方案 本方案中所使用的除TF激光雷达外的设备和工具并非北醒官方产品 xff0c 不提供任何官方售后服务 xff0c
  • TFmini(Plus)在STM32上的应用

    STM32 TFmini 下载地址 xff1a 链接 https pan baidu com s 15IqhmbFTEHsLFydYbzir w 提取码 8iv1 复制链接打开 本文件夹为TFmini的STM32转接例程程序 xff0c 使
  • 阿里云ubuntu18.04搭建图形界面的介绍

    经过几天的奋战 xff0c 在综合别人的宝贵经验之后 xff0c 终于把阿里云的ubuntu18 04的图形界面搭配出来了 xff0c 在此把我个人的经历分享给大家参考一下 首先声明 我是参考原博主的经验搭建出来的 xff0c 具体链接可以
  • 嵌入式开发Verilog教程(一)——数字信号处理、计算、程序、 算法和硬线逻辑的基本概念

    嵌入式开发Verilog教程 xff08 一 xff09 数字信号处理 计算 程序 算法和硬线逻辑的基本概念 一 引言二 数字信号处理三 计算四 算法与数据结构五 编程语言和程序六 系统结构与硬线逻辑七 设计方法学八 专用硬线逻辑与微处理器
  • IntelliJ IDEA 2020.1 正式发布,15 项重大特性、官方支持中文了! | 原力计划

    头图 amp 作者 YourBatman xff0c CSDN博客专家 责编 唐小引 出品 CSDN xff08 ID xff1a CSDNnews xff09 前言 千呼万唤始出来 xff01 自从官方在 2020 01 20 发布了其
  • 状态观测器

    干扰 xff0c 输出 xff0c 系统内状态都是一种状态 xff0c 状态观测器可以扩展干扰观测器 定义系统实际输出和理论输出的误差d xff0c 对d求导得到一个公式 xff0c 系统理论输出求导得到一个公式 xff0c 组建成二元方程
  • python更新pip失败-解决Python pip 自动更新升级失败的问题

    在使用python pip的时候 xff0c 经常会发生pip版本过低导致失败的情况 xff0c 这时候 xff0c 系统会提示让你使用如下命令对pip进行升级更新 xff1a python m pip install upgrade pi
  • es6小记

    const let关键字 let xff1a 声明 使js存在块级作用域 const xff1a 定义常亮 xff0c 定义以后不可以更改 若是引用的类型 xff0c 那可以更改他的属性 const a 61 b 789 br a b 61
  • js检测浏览器内核、版本号

    js检测浏览器内核 版本号 span class hljs function span class hljs keyword function span span class hljs title isBroswer span span c