检测桌面与移动浏览器的可靠方法

时间:2013-01-21 14:02:15

标签: php javascript cross-browser browser-detection

  

可能重复:
  What is the Best way to do Browser Detection in Javascript?

我想基本上执行以下操作(在JavaScript或PHP中):

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

众所周知,使用浏览器detection method is not recommended。更好的解决方案是使用capability testing。我的问题是,随着移动浏览器变得更智能,功能与桌面版一样强大,从非桌面浏览器过滤桌面的理想排他性能力检测是什么?

我认为撤销条件检查,即if (mobile browser) {} else ...可能会更有问题,对吗?

2 个答案:

答案 0 :(得分:14)

来自A Beautiful Site

的Google搜索结果
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,因为它不再是移动设备的独特之处。您无法检查(如果可以)陀螺仪,因为某些笔记本电脑可能会返回值。

构建适用于所有平台的网站,而不是试图将它们分开!

答案 1 :(得分:0)

我认为你在php中寻找get_browser()函数。

  

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