11

可能重复:
在 Javascript 中进行浏览器检测的最佳方法是什么?

我想基本上做以下事情(在 JavaScript 或 PHP 中):

if (desktop browser) {
     do x;
}
else {   // mobile browser
     do not do x;
}

众所周知,不推荐使用浏览器检测方法。更好的解决方案是使用能力测试。我的问题是,随着移动浏览器变得更智能且与桌面版本一样强大,什么理想的独家功能检测可以从非桌面浏览器中过滤桌面?

我认为逆转条件检查 ieif (mobile browser) {} else ...可能会更有问题,对吧?

4

2 回答 2

14

多么小的谷歌搜索出现了,来自一个美丽的网站

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()){
    // Mobile!
} else {
    // Not mobile
}

我不会争辩说特征检测用户代理嗅探更可取,这实际上很糟糕。但是,如果您正在检测功能以确定设备是否被视为移动设备,那么您将面临一系列全新的问题。

您无法检查pixel-ratio,因为新的台式计算机很可能是“视网膜”或超高清。您无法检查device-orientation,因为它不再是手机独有的东西。您无法检查(如果可以)陀螺仪,因为某些笔记本电脑可能会返回值。

构建适用于所有平台的网站,而无需尝试将它们分开!

于 2013-01-21T14:18:50.167 回答
0

我认为您正在寻找 php 中的get_browser()函数。

尝试通过在 browscap.ini 文件中查找浏览器信息来确定用户浏览器的功能。

于 2013-01-21T14:14:49.510 回答