I'd like to essentially do the following (in JavaScript or PHP):

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

It is known that using a browser detection method is not recommended。更好的解决方案是使用capability testing。我的问题是,随着移动浏览器变得越来越智能,功能与台式机一样强大,理想情况下,有什么独有的功能检测功能可以从非台式机浏览器中过滤出台式机?

我认为逆转条件检查,即if (mobile browser) {} else ...可能会遇到更多问题,对吗?

最佳答案

Google从A Beautiful Site进行了一些搜索:

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,因为它不再是手机所独有的。您无法检查(如果可以)陀螺仪,因为某些笔记本电脑可能会返回值。

构建可在所有平台上运行的网站,而无需尝试将它们分开!

09-11 19:41