我正在为各种移动平台创建一个 phonegap 应用程序,我想知道当前浏览器/手机检测的最佳解决方案是什么?
我应该使用服务器或客户端检测,还是可以通过媒体类型屏幕宽度使用 css 解决方案?
可用的解决方案很少,但我只会列出开源的解决方案,至少主要用于 jQuery/jQuery Mobile 的解决方案.还请注意,这个话题有可能引发战争.一方面,我们支持使用他们社区维护的数据库进行服务器端检测,另一方面,我们拥有使用浏览器嗅探的客户端支持者.
WURFL -
<块引用>创建于 2002 年的 WURFL(无线通用资源文件)是一个解决设备碎片化的流行开源框架移动 Web 开发人员和移动中的其他利益相关者的问题生态系统.WURFL 一直是并且仍然是事实上的标准移动开发人员采用的设备描述存储库.WURFL 是开源 (AGPL v3) 和 ScientiaMobile 的商标.
好:
非常详细的检测,你可能会得到更多的数据,然后才是真正需要的.
良好的平台支持,API 可用于 Java、PHP 和 .Net.
糟糕:
不总是最新的,严重依赖社区
如果是 iPhone,则无法知道 iOS 版本,因此通过媒体类型查询来检测像素比率.
仅对非商业用途收费,旧版本仍可免费用于商业用途,但只能使用更新至 WURFL EULA 更改的数据库.
PHP 示例:
getWURFLInfo();if (isset($_GET['ua']) &&trim($_GET['ua'])) {$ua = $_GET['ua'];$requestingDevice = $wurflManager->getDeviceForUserAgent($_GET['ua']);} 别的 {$ua = $_SERVER['HTTP_USER_AGENT'];//此行通过查看其 HTTP 请求 ($_SERVER) 来检测访问设备$requestingDevice = $wurflManager->getDeviceForHttpRequest($_SERVER);}?><头><title>WURFL PHP API 示例</title>头部><身体><h3>WURFL XML 信息</h3><ul><li><h4>版本:<?php echo $wurflInfo->version;?></h4></li><div id="内容">用户代理:<b><?php echo htmlspecialchars($ua);?></b><ul><li>ID: <?php echo $requestingDevice->id;?><li>品牌名称:<?php echo $requestingDevice->getCapability('brand_name');?><li>模型名称:<?php echo $requestingDevice->getCapability('model_name');?><li>营销名称:<?php echo $requestingDevice->getCapability('marketing_name');?><li>首选标记:<?php echo $requestingDevice->getCapability('preferred_markup');?><li>分辨率宽度:<?php echo $requestingDevice->getCapability('resolution_width');?><li>分辨率高度:<?php echo $requestingDevice->getCapability('resolution_height');?><p><b>通过提供用户代理来查询 WURFL:</b></p><form method="get" action="index.php"><div>用户代理:<input type="text" name="ua" size="100" value="<?php echo isset($_GET['ua'])? htmlspecialchars($_GET['ua']): ''; ?>"/><input type="submit"/></div></表单>