使用 Javascript 检测 Chrome 操作系统

2023-12-06

我想用 Javascript 检测 Chrome 操作系统,并且我正在使用navigator.userAgent为了这。现在,我正在运行 Chrome 操作系统,我的导航器 userAgent 是

Mozilla/5.0 (X11; CrOS armv7l 6680.78.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.102 Safari/537.36

现在。我使用正则表达式来检查 userAgent 的样式,并编写了下面的代码。

<script>
    if ( navigator.userAgent = /^Mozilla\/\d{1}^.\d{1}^(X11; CrOS i\d{3} \d{1}^.\d{2}\d{3} ^AppleWebKit\/\d{3}^.\d{2} ^(KHTML, like Gecko) Chrome\/ \d{2}^.\d{1}^.\d{3}^.\d{2} ^Safari\/\d{3}^\d{2}/ ){
      console.log(navigator.userAgent);
    } else {
      console.log(navigator.userAgent);
    }
</script>

现在,加载此脚本后,我收到错误。

Uncaught SyntaxError: Invalid regular expression: /^Mozilla\/\d{1}^.\d{1}^(X11; CrOS i\d{3} \d{1}^.\d{2}\d{3} ^AppleWebKit\/\d{3}^.\d{2} ^(KHTML, like Gecko) Chrome\/ \d{2}^.\d{1}^.\d{3}^.\d{2} ^Safari\/\d{3}^\d{2}/: Unterminated group

我的代码有什么问题吗?


它抱怨的是你有一个(没有匹配的)。在正则表达式中,( and ) define 捕获组并且必须保持平衡。如果你想匹配实际的( or ),你必须用反斜杠转义它。

但还有其他几个问题。拥有没有意义^例如,(“输入开始”)除表达式开头之外的任何位置。

但我不认为还有什么CrOS在用户代理中,所以也许很简单:

if (/\bCrOS\b/.test(navigator.userAgent)) {
    // yes, it is (probably, if no one's mucked about with their user agent string)
} else {
    // No, it isn't (probably, if no one's mucked about with their user agent string)
}

The \b是“单词边界”,所以我们不匹配单词中间的字符串。请注意,我将其区分大小写。


旁注:我发现https://regex101.com/#javascript(我与它没有任何关系)对于调试正则表达式非常有用。

旁注#2:如果您真的需要检测 ChromeOS,但如果这只是您需要检查的一项功能,例如jfriend00 指出,特征检测可能是更好的方法。

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

使用 Javascript 检测 Chrome 操作系统 的相关文章

  • AJAX 安全问题

    我希望能够解决一些关于 AJAX 安全性的问题 这是我试图理解的一个场景 假设我正在使用 AJAX 向页面请求一些半敏感材料 例如 我将把用户的 ID 传递给一个 php 文件 并返回一些关于他们自己的信息 现在 是什么阻止人们模拟此 Ja
  • 如何恢复文本框数据

    我有一个小小的要求 我们已经恢复了之前清除的文本框数据 下面是我的 HTML 代码 table tr td td tr table
  • JAVASCRIPT - 为什么这个对象没有改变?

    function myFunc theObject theObject make Ford model Focus year 2006 var mycar make Honda model Accord year 1998 var x my
  • Javascript 进程是否有多个执行线程?

    背景 我正在创建一个 地址簿 类型的应用程序 有很多条目需要加载 一个想法是首先加载一小部分条目 让用户开始 然后将剩余条目排队 优先考虑用户单击的条目 例如 如果他们单击以 X 开头的名称 请先加载这些名称 然后再处理队列的其余部分 这个
  • 如何在React Native的MapView中设置标记

    我想在React Native中的MapView上设置一个标记 但是通过官方文档找不到任何信息MapView https facebook github io react native docs mapview html content 如
  • 从选择 onChange 调用 javascript 函数 [重复]

    这个问题在这里已经有答案了 所以我有一个简单的 HTML 选择框和一个 javascript 警报功能 我希望选择框有一个 onchange 事件来调用 javascript 警报函数 这是我到目前为止所拥有的 HTML div Type
  • 检查用户设备的 GPS 是否开启

    我正在使用 jQuery Mobile 和 PHP 开发一个应用程序 我没有使用 Phonegap 或其他框架 我需要找到用户的geolocation 如果用户设备的 GPS 关闭 那么我无法获取位置 现在我需要查找用户设备的 GPS 是否
  • 使用javascript以编程方式触发iOS safari中的复制菜单?

    我正在尝试实现一种用户友好的方式 将一些文本从文本输入字段复制到 iOS Safari 上的剪贴板 我知道无法在这个平台上以编程方式完成此操作 但我希望能够尽可能地指导用户体验 在 iOS Safari 上 当用户手动突出显示某些文本时 会
  • 如何知道 .keyup() 是否是字符键(jQuery)

    如何知道 keyup 是否是字符键 jQuery input keyup function if key is a character such as a b A b c 5 3 2 etc not enter key or shift o
  • ES6 模块范围

    我有代码 lib js var a a export var b b main js console log a a variable is not available in a global scope import b from lib
  • 从字节数组设置 img src

    我需要设置img src我在对象中拥有的字节数组的属性 img
  • Angular JS - 使服务可以从控制器和视图全局访问

    假设我们有以下服务 myApp factory FooService function 然后 从控制器中 我会说 myApp controller FooCtrl scope FooService function scope FooSer
  • 从网页运行 ClickOnce 应用程序,无需用户操作

    我们有一个基于 Java 的 Web 应用程序以及用 C 编写的相同应用程序 如果 java 检查器发现客户端计算机上没有安装 Java 则应该运行该应用程序 这个想法是运行 C 单击一次 http en wikipedia org wik
  • 轮播滑动(未滑动)事件上的火灾事件,Bootstrap 3

    Bootstrap 2 似乎可以很好地处理幻灯片事件 请参阅这个问题 https stackoverflow com questions 9651466 how to attach slide slid events to the boot
  • Firebase + Node.js:错误:找不到 XMLHttpRequest 兼容性库

    Firebase Node js On iOS 安装的 Node js npm 安装 firebase save 节点测试 js 其中 test js 是一个非常简单的连接到 Firebase 的脚本 var firebase requir
  • React Redux - 在辅助函数中访问现有存储

    我试图在反应组件之外获取存储实例 存储状态 即在单独的辅助函数中 我有我的减速器 我的动作 我在最上面的组件中创建了一个商店 configStore js import createStore from redux import gener
  • 如何在 TypeScript 中使用 navigation.replace ?

    我试图在我的代码中使用它 const navigation useNavigation navigation replace AllFriends 但我不断收到错误消息 Property replace does not exist on
  • jQuery Mobile + Admob:轮换?

    我使用 jQuery Mobile 框架创建了一个移动应用程序 所有页面都在index php中加载 使用 div 在每个页面的页脚中 我添加了Admob代码 div div div
  • Vue - 调度完成后调用 store getter?

    我正在使用 Laravel 5 7 Vue2 Vuex 我在调度调用完成后让 Vue 返回存储值时遇到一些困难 我的申请流程如下 我单击一个提交按钮 该按钮调用组件上的 validate Validate 分派到我的 addLease 操作
  • JavaScript 阶乘防止无穷大

    我一直在 JavaScript 中使用这个函数来计算阶乘数 var f function factorial n if n 0 n 1 return 1 if f n gt 0 return f n return f n factorial

随机推荐

  • PySide2 复合小部件悬停效果

    当鼠标指针进入或离开 QListWidgetItem 时 如何对自定义小部件内的组合元素的位置 比例或任何其他属性进行动画处理 见下面的参考图 有没有更好的方法来管理 QListWidgetItem 周围的空间 项目 qwidget siz
  • CoreText 中的行距和段落对齐

    我正在使用 CoreText 渲染多列文本 但是 当我将第一段的第一个字母设置为比文本其余部分更大的粗体字体时 我遇到了 2 个问题 都在附图中可见 第一行下方的间距太大 我理解这是因为第一个字符可能是 g y p q 等 第一行下方的行现
  • 角度手风琴范围的问题

    我有一个名为模板的指令 模板的代码如下所示 var templates function compile parse var directive restrict EA replace true link link return direc
  • Android 在 NFC 标签上多次启动活动

    我的 Android 应用程序有 2 个活动 一个主要用于信息 另一个用于接收 NFC 第一次启动应用程序时 我可以多次读取 NFC 标签 每次都会启动一个新活动并显示一些信息 如果应用程序关闭但手机被带到 NFC 标签 它将第一次显示 N
  • Android 以编程方式设置或重置 SIM 卡 PIN 码

    我已经实现了下面的解锁我的应用程序 此代码仅适用于系统应用程序 所以我已将我的应用程序作为系统应用程序完成 TelephonyManager manager TelephonyManager this getSystemService Co
  • 告诉服务器用户不再上网

    我是node js新手 尝试使用node js和socket io开发群聊 我可以进行群聊 也可以管理系统中的数据 现在 我的问题是离线用户 即未连接到互联网 我有该用户的连接流 就像我执行receiverUserSocket emit s
  • MATLAB 中的邻近灰度依赖矩阵 (NGLDM)

    我想计算一些纹理特征 即 小 大数字强调 数字不均匀性 二阶矩和熵 这些可以从邻近灰度依赖矩阵计算出来 我正在努力理解 实施这一点 关于此方法的信息很少 公开可用 根据这张纸 This matrix takes the form of a
  • 大文件支持在 C 编程中不起作用

    我正在尝试编译一个共享对象 最终在Python中与ctypes一起使用 用于构建对象的命令行是 gcc Wall O3 shared Wl soname borg stream lm m128bit long double fPIC D F
  • Dagger 2 子组件与组件依赖关系

    匕首1号plus 方法是我在以前的应用程序中经常使用的方法 因此我理解您可能希望子组件能够完全访问父图绑定的情况 在什么情况下使用组件依赖代替子组件依赖为什么 组件依赖性 当您想要保持两个组件独立时使用此选项 子组件 当您想要保持两个组件耦
  • MySQL自动ID列

    我想知道如何让 MySQL 自动有一列为每行添加 1 第 1 行将具有 ID 1 第 2 行将获得 ID 2 等等 例如 每次新用户在网站上注册时 他们都会被分配一个 ID 号 从 1 开始 然后是 2 依此类推 ID 用户名 密码1 鲍勃
  • 如果没有可变状态,你怎么能做任何有用的事情呢?

    我最近读了很多关于函数式编程的东西 我能理解其中的大部分内容 但我无法理解的一件事是无状态编码 在我看来 通过删除可变状态来简化编程就像通过删除仪表板来 简化 汽车一样 成品可能会更简单 但祝你好运 让它与最终用户进行交互 我能想到的几乎每
  • 带有在线 MySql/Sql 数据库的 Xamarin Android 应用程序 [已关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我想知道如何将 Android 应用程序与在线数据库连接 我在网上读了很多书 但我仍然悬而未决 我不知道哪种方法最好 我从谷歌看到了类似的东西SQL
  • 将 ItemizedOverlay 添加到我的地图视图

    我正在使用 osm 开发地图应用程序 我想在我的地图视图上创建一些标记 我正在使用以下代码 this mMyLocationOverlay new ItemizedOverlay
  • Pig 相当于 SQL GREATEST / LEAST?

    我试图找到相当于猪SQL 函数GREATEST and LEAST 这些函数是聚合 SQL 函数的标量等效项MAX and MIN 分别 本质上 我希望能够这样说 x LOAD file a b c csv USING PigStorage
  • DiggBar 是如何工作的?

    DiggBar 是如何工作的 我正在尝试制作 ASP NET MVC DiggBar 克隆 仅用于学习目的 有人对如何指定下框架内容的 url 有建议吗 您将如何在 MVC 中构建它 另外 我知道它是一个 iFrame 但他们如何定位它 以
  • 在Python模块中强制执行方法顺序[关闭]

    Closed 这个问题是基于意见的 目前不接受答案 处理必须按一定顺序调用方法的模块的最 Pythonic 方法是什么 例如 我有一个 XML 配置 在执行其他操作之前必须读取该配置 因为该配置会影响行为 The parse config
  • Blazor OnAfterRenderAsync 混淆

    我理解这个想法OnAfterRenderAsyc 但我不明白如何实现我想要的 我有OnInitializedAsync 基本上从文件中获取摘要信息 之后 我想调用另外 2 个方法 并根据这 2 个方法返回的信息 我想将一些 HTML 添加到
  • 使用 Linq 获取 CDATA XML 部分

    我到处搜索寻找访问 CDATA 部分文本区域的方法 并发现使用 linq 的非常温暖的解决方案 我需要提取 CDATA 部分中嵌入的 XML 以便提取不同的信息 我有以下 XML
  • 为什么 JSTL 数字格式值不支持运行时表达式?

    我有这个代码
  • 使用 Javascript 检测 Chrome 操作系统

    我想用 Javascript 检测 Chrome 操作系统 并且我正在使用navigator userAgent为了这 现在 我正在运行 Chrome 操作系统 我的导航器 userAgent 是 Mozilla 5 0 X11 CrOS