JavaScript如何检查移动/平板电脑的用户代理

JavaScript如何检查移动/平板电脑的用户代理,javascript,android,mobile,tablet,Javascript,Android,Mobile,Tablet,我目前正在为一个客户端网站开发一些JS作品,该网站在桌面和平板电脑平台上具有不同的功能。考虑: if(! navigator.userAgent.match(/Android/i) && ! navigator.userAgent.match(/webOS/i) && ! navigator.userAgent.match(/iPhone/i) && ! navigator.u

我目前正在为一个客户端网站开发一些JS作品,该网站在桌面和平板电脑平台上具有不同的功能。考虑:

if(! navigator.userAgent.match(/Android/i) &&
            ! navigator.userAgent.match(/webOS/i) &&
            ! navigator.userAgent.match(/iPhone/i) &&
            ! navigator.userAgent.match(/iPod/i) &&
            ! navigator.userAgent.match(/iPad/i) &&
            ! navigator.userAgent.match(/Blackberry/i) )
    {
        // do desktop stuff

    } else if ( navigator.userAgent.match(/iPad/i) ) 
    {
       // do tablet stuff

    }
目前,我只检查iPad,因为检查“android”似乎有点问题,而且是一个非常宽泛的术语。有没有一种已知的方法可以使用JS区分Android平板电脑和移动设备

非常感谢,,
迈尔斯

首先-改善病情

if (navigator.userAgent.match(/iPad/i))
{
    // do tablet stuff
} else if(navigator.userAgent.match(/Android|webOS|iPhone|iPod|Blackberry/i) )
{
    // do mobile stuff
} else {
    // do desktop stuff
}
第二,添加缺少的关键字:

if (navigator.userAgent.match(/Tablet|iPad/i))
{
    // do tablet stuff
} else if(navigator.userAgent.match(/Mobile|Windows Phone|Lumia|Android|webOS|iPhone|iPod|Blackberry|PlayBook|BB10|Opera Mini|\bCrMo\/|Opera Mobi/i) )
{
    // do mobile stuff
} else {
    // do desktop stuff
}
第三,这是我使用的实际检测脚本:

if (navigator.userAgent.match(/Tablet|iPad/i))
{
    // do tablet stuff
} else if(navigator.userAgent.match(/Mobile|Windows Phone|Lumia|Android|webOS|iPhone|iPod|Blackberry|PlayBook|BB10|Opera Mini|\bCrMo\/|Opera Mobi/i) )
{
    // do mobile stuff
} else {
    // do desktop stuff
}

编辑:

if (navigator.userAgent.match(/Tablet|iPad/i))
{
    // do tablet stuff
} else if(navigator.userAgent.match(/Mobile|Windows Phone|Lumia|Android|webOS|iPhone|iPod|Blackberry|PlayBook|BB10|Opera Mini|\bCrMo\/|Opera Mobi/i) )
{
    // do mobile stuff
} else {
    // do desktop stuff
}
请注意,平板电脑和iPad同时被视为
移动设备
平板电脑

请注意,有些笔记本电脑同时具有触摸屏、鼠标和键盘。换句话说,一个好的程序员并不依赖于触摸,相反,它在任何情况下都支持所有三种输入法。

您可以使用以下步骤

  var isMobile = {
    Android: function () {
        return navigator.userAgent.match(/Android/i);
    },
    BlackBerry: function () {
        return navigator.userAgent.match(/BlackBerry/i);
    },
    iOS: function () {
        return navigator.userAgent.match(/iPhone|iPad|iPod/i);
    },
    Opera: function () {
        return navigator.userAgent.match(/Opera Mini/i);
    },
    Windows: function () {
        return navigator.userAgent.match(/IEMobile/i);
    },
    any: function () {
        return (isMobile.Android() || isMobile.BlackBerry() || isMobile.iOS() || isMobile.Opera() || isMobile.Windows());
    }
};

if (isMobile.any()) {
    window.location = "#";
}

因此,根据对这个问题的评论:UA中有许多平板电脑都包含“手机”。有没有办法绕过这个问题?这仍然准确吗?我必须从列表中删除
Mobile
,才能与iPad不匹配。Thanks@MarioParra平板电脑和iPad都是
移动设备
平板电脑
。。。所以你的意思是。。。“你需要一个折扣
仔细检查一下
”?在分为平板电脑(起初可能只有iPad)、手机和台式电脑之后,我会(在做事情之前)然后根据最大值(高度、宽度)在手机和平板电脑之间做一次“修正”尝试
。(是的,仍然是烟雾测试/决定……但是)