【发布时间】:2015-04-15 17:44:07
【问题描述】:
我想用 Javascript 检测 Chrome 操作系统,为此我使用了 navigator.userAgent。现在,我正在运行 Chrome OS,而我的导航器 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
我的代码有什么问题?
【问题讨论】:
-
在编写更多查看用户代理的代码之前,您可能需要考虑改用feature detection。当然,只有在您描述了您尝试使用 Chrome 操作系统解决的实际问题时,我们才能帮助您进行功能检测。
-
@jfriend00 感谢您对使用特征检测的建议,我相信我稍后会使用该链接,但是对于这个 Web 应用程序,我宁愿看一下用户代理.
-
为什么你认为用户代理检测更好?
-
@jfriend00 我认为是因为 Chrome OS 本质上只是 Chrome 浏览器。我想检测操作系统,而不是浏览器类型。如果我错了,请纠正我。
-
在您告诉我们您为什么要尝试检测 Chrome 操作系统(例如,真正的问题在这里)之前,我们无法就使用功能检测进行有意义的对话。您是在询问您选择的特定解决方案,而不是告诉我们您要解决的真正问题,这是人们在 SO 上限制自己的常见方式。
标签: javascript user-agent google-chrome-os