浏览器识别操作系统

2023-11-17

前端识别操作系统


@软件设计模式概述

浏览器识别操作系统

<html>

<head>
  <title>Judge System Os</title>
  <script type="text/javascript">
    function detectOS() {
      var sUserAgent = navigator.userAgent;
      var isWin = (navigator.platform == "Win32") || (navigator.platform == "Windows");
      var isMac = (navigator.platform == "Mac68K") || (navigator.platform == "MacPPC") || (navigator.platform == "Macintosh") || (navigator.platform == "MacIntel");
      if (isMac) return "Mac";
      var isUnix = (navigator.platform == "X11") && !isWin && !isMac;
      if (isUnix) return "Unix";
      var isLinux = (String(navigator.platform).indexOf("Linux") > -1);
      var bIsAndroid = sUserAgent.toLowerCase().match(/android/i) == "android";
      if (isLinux) {
        if (bIsAndroid) return "Android";
        else return "Linux";
      }
      if (isWin) {
        var isWin2K = sUserAgent.indexOf("Windows NT 5.0") > -1 || sUserAgent.indexOf("Windows 2000") > -1;
        if (isWin2K) return "Win2000";
        var isWinXP = sUserAgent.indexOf("Windows NT 5.1") > -1 ||
          sUserAgent.indexOf("Windows XP") > -1;
        if (isWinXP) return "WinXP";
        var isWin2003 = sUserAgent.indexOf("Windows NT 5.2") > -1 || sUserAgent.indexOf("Windows 2003") > -1;
        if (isWin2003) return "Win2003";
        var isWinVista = sUserAgent.indexOf("Windows NT 6.0") > -1 || sUserAgent.indexOf("Windows Vista") > -1;
        if (isWinVista) return "WinVista";
        var isWin7 = sUserAgent.indexOf("Windows NT 6.1") > -1 || sUserAgent.indexOf("Windows 7") > -1;
        if (isWin7) return "Win7";
      }

      if (sUserAgent.indexOf("Windows NT 8") != -1) {
        return "win8";

      }

      if (sUserAgent.indexOf("Windows NT 10") != -1) {
        return "win10";

      }

      return "other";
    }
    // document.writeln("您的操作系统是:" + detectOS());
  </script>
  <script>
    var osData = [
      { name: 'Windows 2000', group: 'windows_server', identifier: 'Windows NT 5.0', version: '5.0' },
      { name: 'Windows XP', group: 'windows', identifier: 'Windows NT 5.1', version: '5.1' },
      { name: 'Windows 2003', group: 'windows_server', identifier: 'Windows NT 5.2', version: '5.2' },
      { name: 'Windows Vista', group: 'windows', identifier: 'Windows NT 6.0', version: '6.0' },
      { name: 'Windows 7', group: 'windows', identifier: 'Windows NT 6.1', version: '7.0' },
      { name: 'Windows 8', group: 'windows', identifier: 'Windows NT 6.2', version: '8.0' },
      { name: 'Windows 8.1', group: 'windows', identifier: 'Windows NT 6.3', version: '8.1' },
      { name: 'Windows 10', group: 'windows', identifier: 'Windows NT 10.0', version: '10.0' },
      { name: 'Windows 2008', group: 'windows_server', identifier: 'Windows NT 6.0; WOW64', version: '6.0' },
      { name: 'Windows 2008', group: 'windows_server', identifier: 'Windows NT 6.1; WOW64', version: '6.1' },
      { name: 'Windows 2012', group: 'windows_server', identifier: 'Windows NT 6.3; Win64', version: '6.3' },
      { name: 'Chrome OS', group: 'windows', identifier: 'CrOS' },
      { name: 'Mac OS X Capitan', group: 'mac', identifier: 'Mac OS X (10([_|\.])11([0-9_\.]*))', versionSeparator: '[_|\.]' },
      { name: 'Mac OS X Yosemite', group: 'mac', identifier: 'Mac OS X (10([_|\.])10([0-9_\.]*))', versionSeparator: '[_|\.]' },
      { name: 'Mac OS X Mavericks', group: 'mac', identifier: 'Mac OS X (10([_|\.])9([0-9_\.]*))', versionSeparator: '[_|\.]' },
      { name: 'Mac OS X Mountain Lion', group: 'mac', identifier: 'Mac OS X (10([_|\.])8([0-9_\.]*))', versionSeparator: '[_|\.]' },
      { name: 'Mac OS X Lion', group: 'mac', identifier: 'Mac OS X (10([_|\.])7([0-9_\.]*))', versionSeparator: '[_|\.]' },
      { name: 'Mac OS X Snow Leopard', group: 'mac', identifier: 'Mac OS X (10([_|\.])6([0-9_\.]*))', versionSeparator: '[_|\.]' },
      { name: 'Mac OS X Leopard', group: 'mac', identifier: 'Mac OS X (10([_|\.])5([0-9_\.]*))', versionSeparator: '[_|\.]' },
      { name: 'Mac OS X Tiger', group: 'mac', identifier: 'Mac OS X (10([_|\.])4([0-9_\.]*))', versionSeparator: '[_|\.]' },
      { name: 'Mac OS X Panther', group: 'mac', identifier: 'Mac OS X (10([_|\.])3([0-9_\.]*))', versionSeparator: '[_|\.]' },
      { name: 'Mac OS X Jaguar', group: 'mac', identifier: 'Mac OS X (10([_|\.])2([0-9_\.]*))', versionSeparator: '[_|\.]' },
      { name: 'Mac OS X Puma', group: 'mac', identifier: 'Mac OS X (10([_|\.])1([0-9_\.]*))', versionSeparator: '[_|\.]' },
      { name: 'Mac OS X Cheetah', group: 'mac', identifier: 'Mac OS X (10([_|\.])0([0-9_\.]*))', versionSeparator: '[_|\.]' },
      { name: 'Mac OS', group: 'mac', identifier: 'Mac OS' },
      { name: 'Ubuntu', group: 'linux_server', identifier: 'Ubuntu', versionIdentifier: 'Ubuntu/([0-9\.]*)' },
      { name: 'CentOs', group: 'linux_server', identifier: 'CentOs', versionIdentifier: 'CentOs/([0-9\.]*)' },
      { name: 'Debian', group: 'linux_server', identifier: 'Debian' },
      { name: 'Gentoo', group: 'linux_server', identifier: 'Gentoo' },
      { name: 'GCH-System', group: 'linux', identifier: 'Linux' }
    ];
    var setOsData = function (os) {
      var userAgent = navigator.userAgent.toLowerCase();
      // Check browser type
      for (i in osData) {
        if (osData.hasOwnProperty(i)) {
          var osRegExp = new RegExp(osData[i].identifier.toLowerCase());
          var osRegExpResult = osRegExp.exec(userAgent);

          if (osRegExpResult != null) {
            os.name = osData[i].name;
            os.group = osData[i].group;
            break;
          }
        }
      }

      return true;
    };
    var setOsVersion = function (os, version, separator) {
      if (separator.substr(0, 1) == '[') {
        var splitVersion = version.split(new RegExp(separator, 'g'), 2);
      } else {
        var splitVersion = version.split(separator, 2);
      }
      if (separator != '.') {
        version = version.replace(new RegExp(separator, 'g'), '.');
      }
      os.fullVersion = version;
      // Major version
      if (splitVersion[0]) {
        os.majorVersion = parseInt(splitVersion[0]);
      }
      // Minor version
      if (splitVersion[1]) {
        os.minorVersion = parseInt(splitVersion[1]);
      }

      return true;
    };
    var os = {};
    setOsData(os);
    document.writeln("Your Current System OS is:" + os.name);
  </script>
</head>

<body>
</body>

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

浏览器识别操作系统 的相关文章

随机推荐

  • docker run -it 和 docker exec -it具有什么功能呢?

    Docker Docker是一个开源的应用容器引擎 让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中 然后发布到任何流行的 Linux或Windows操作系统的机器上 也可以实现虚拟化 容器是完全使用沙箱机制 相互之间不会有任何接口
  • 有关联想拯救者Y7000重装window10系统

    文章目录 1 联想拯救者使用U盘重装系统不需要进入bios 2 总结 由于C盘爆满了 所以选择重装系统来重新给C盘分下区 给C盘分大点 然后重装系统的具体流程参照的是博客使用U盘重装Windows10系统详细步骤及配图 官方纯净版 然后写这
  • 03 什么是预训练(Transformer 前奏)

    博客配套视频链接 https space bilibili com 383551518 spm id from 333 1007 0 0 b 站直接看 配套 github 链接 https github com nickchen121 Pr
  • 20145334赵文豪《网络对抗》—— 网络欺诈技术防范

    1 实验后回答问题 1 通常在什么场景下容易受到DNS spoof攻击 局域网内的攻击 连接公共场所的wifi 2 在日常生活工作中如何防范以上两种攻击方法 输入个人信息前 仔细检查核对域名是否正确 使用入侵检测系统 使用防火墙进行保护 d
  • 关闭bat运行python时的chromedriver窗口

    运行python 查看三方库的安装位置 打开文件位置 默认conda在这里 找到selenium webdriver common service py 添加依赖 修改70行左右代码 self process subprocess Pope
  • 深度学习之心得——dropout

    作用 防止过拟合 什么时候过拟合 网络参数多 训练数据少的时候 容易过拟合 原理 前向传播过程中暂时屏蔽一些节点 暂时不更新它的参数 这样就可以训练多个不同的网络 降低过拟合的可能 Dropout层的位置 Dropout一般放在全连接层防止
  • python垃圾回收 (GC) 机制

    Python 能够自动进行内存分配和释放 但了解 python 垃圾回收 garbage collection GC 的工作原理可以帮助你写出更好更快的 Python 程序 Python 使用两种算法进行垃圾回收 分别是引用计数 Refer
  • 六、Kafka consumer及ConsumerRebalanceListener实现

    1 comsumer代码示例 public class ConsumerMessage private static final String TOPIC NAME topic 07 public static void main Stri
  • cJSON移植到STM32

    项目中用到JSON接收网络数据 具体是STM32串口接收JSON数据 提取需要的内容 本来KEIL MDK是自带JSON的 但是我不习惯使用KEIL自带的那些第三方的东西 很杂乱的感觉 cJSON的移植比较简单 一下子就可以搞定 1 下载源
  • spring boot 1.5.4 之监控Actuator(十四)

    上一篇 spring boot 1 5 4 整合 druid 十三 Spring Boot监控Actuator 项目 mybatis spring boot为例 源码地址 spring boot相关项目源码 码云地址 https git o
  • Spring 启动错误:ConfigServletWebServerApplicationContext

    报错提示 2023 02 14 14 28 07 198 INFO 15724 main com longyi ruiji RuiJiApplication Starting RuiJiApplication using Java 19 0
  • QT绘图:实现将没有布局的界面进行缩放显示

    QT绘图 实现将没有布局的界面进行缩放显示 前言 在实际开发过程中 会遇到一些无法使用布局的界面 如果将这样的界面直接放入另一个界面 大小不合适就会出现页面太丑的情况 而解决的方法可以是重构界面 但是一些界面过于复杂 重构很难实现 那么笔者
  • 用MATLAB对图像进行采样处理

    用MATLAB对图像进行采样处理 一 实验目的 掌握图像采样原理 二 实验内容 试对512x512的lenagray jpg图像分别采样为256x256 128x128 64x64的图像 观察图像质量的变化 第一幅图是原图 第二幅是不同采样
  • linux下手动安装git教程

    Git是一个开源的分布式版本控制系统 可以有效 高速的处理从很小到非常大的项目版本管理 而国外的GitHub和国内的Coding都是项目的托管平台 但是在使用git工具的时候 第一步要学会如何安装git 本教程就手把手教大家如何手动编译安装
  • input的type=file触发的相关事件

    今天突然用到input相关的事件 突然发现自己还没有总结过input相关事件的运行原理 而且我还竟然翻api去了解了 所以 为了记恨自己 就写了相关与input相关的事件运行的过程 添加了一些相关的方法测试了一下 这一节首先介绍一个inpu
  • mysql 修改utf8mb4

    右键计算机 找到服务和应用程序 找到服务 找到MYSQL56 img src https img blog csdn net 20160518101645822 watermark 2 text aHR0cDovL2Jsb2cuY3Nkbi
  • C++ 浮点数的大小比较

    C 浮点数的大小比较 一 C 的精度损失 二 浮点数比较 三 总结 一 C 的精度损失 浮点数的存储格式 符号位 指数位 尾数位 sign bit Exponent Mantissa 浮点数分为单精度float和双精度double 32位和
  • WordPress search页面出现 404

    遇到问题 在新版 6 0 2 发现 当使用 wordpress 提供的原生searchform php搜索功能时 会出现 404 报错信息 导致界面样式错乱 问题排查 从请求发现 使用原生搜索组件 发出的请求是在根路由后面直接拼接了 s x
  • TCP滑动窗口控制流量的原理

    TCP的滑动窗口机制 TCP这个协议是网络中使用的比较广泛 他是一个面向连接的可靠的传输协议 既然是一个可靠的传输协议就需要对数据进行确认 TCP协议里窗口机制有2种 一种是固定的窗口大小 一种是滑动的窗口 这个窗口大小就是我们一次传输几个
  • 浏览器识别操作系统

    前端识别操作系统 浏览器识别操作系统 软件设计模式概述 浏览器识别操作系统