【问题标题】:Javascript : Identify whether it is a desktop Linux or AndroidJavascript : 识别是桌面 Linux 还是 Android
【发布时间】:2015-07-01 03:49:30
【问题描述】:

使用navigator.userAgentnavigator.platform 无法识别它是Linux 台式机还是Android 设备,因为某些Android 设备在两者中都有字符串linux。详情如下

Device                           OS               navigator.platform  
--------------------------------------------------------------------
Samsung Galaxy S3                Android 4.3      Linux armv7l
HTC One                          Android 4.4.2    Linux armv7l
Sony Xperia Z                    Android 4.2.2    Linux armv7l
Motorola Moto G                  Android 4.4.2    Linux armv7l
Samsung Galaxy Tab 3             Android 4.2.2    Linux i686
Nexus 10                         Android 4.4.2    Linux armv7l
Lenovo Yoga                      Android 4.2.2    Linux armv7l

navigator.userAgent

Mozilla/5.0 (Linux; U; Android 2.2; en-us; SCH-I800 Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1

即使我尝试过触摸事件,但 linux 桌面可以有触摸或者它可以模拟触摸。请帮忙

更新:即使桌面浏览器的模拟设备处于活动状态,该解决方案也应检测 Linux。 View Details

【问题讨论】:

  • 请问您要解决哪个问题?视情况而定,除了基于用户代理检测设备之外,可能还有其他解决方案。
  • 是的,你通常不应该有依赖于用户代理的代码......相反,最好在浏览器中检查你想要的功能。 modernizr.com 是一个很棒的免费图书馆。
  • 我正在使用科尔多瓦,科尔多瓦文件应该只包含在设备中,而不是桌面浏览器中,甚至不包含在浏览器中可用的模拟选项中。

标签: javascript android linux


【解决方案1】:

Browser identification based on detecting the user agent string is unreliable and is not recommended

现在的浏览器检测不是一个好的做法,人们使用基于 javascript 或 @media 查询的特征检测。

推荐阅读this answer,或许你可以换个角度看问题。

【讨论】:

    【解决方案2】:

    你可以试试这个:

    if (navigator.userAgent.match(/android/i)) {
       // it's andorid
    } else if (navigator.userAgent.match(/linux/i)) {
       // it's linux
    }
    

    【讨论】:

    • 谢谢,这可行,但在桌面浏览器中使用模拟选项失败,为什么需要在第一行匹配linux
    • @lal 实际上你可以跳过那个检查。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-20
    • 2013-12-18
    • 2017-09-18
    • 2013-12-11
    • 1970-01-01
    • 2015-12-10
    • 2011-03-04
    相关资源
    最近更新 更多