@Ekramul Hoque 的想法是正确的,但他的答案存在几个缺陷。
首先,我会从 Edge 开始,因为 Internet Explorer 在其UA中不包含术语 Edge
。
if(strpos($_SERVER['HTTP_USER_AGENT'], 'Edge') !== FALSE) {
echo '<link type="text/css" href="ms.css" />';
然后,继续向后工作,因为早期版本的IE没有使用Trident
引擎,因此在它们的UA中不会包含它。
} elseif (strpos($_SERVER['HTTP_USER_AGENT'], 'Trident') !== FALSE) {
echo '<link type="text/css" href="ms.css" />';
} elseif (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== FALSE) {
echo '<link type="text/css" href="ms.css" />';
我们需要接下来针对iOS浏览器,以便后续的查询不会干扰到这个查询。所有的iOS浏览器都使用webkit,除了Opera Mini,它通过远程服务器进行渲染而不是设备本身。这意味着我们可以通过UA中的
iOS来针对该操作系统,并排除包含
Opera的UA。
} elseif (strpos($_SERVER['HTTP_USER_AGENT'], 'iOS') && !strpos($_SERVER['HTTP_USER_AGENT'], 'Opera') !== FALSE {
echo '<link type="text/css" href="webkit.css" />';
接下来,转向Firefox浏览器。虽然使用Firefox作为搜索词可以起到作用,但它只能识别Firefox浏览器,而不能识别基于Firefox的浏览器。Firefox在其UA中包含Gecko,因为Gecko是它使用的引擎,因此我们可以针对它进行定位。通过使用Gecko,我们可以识别所有运行在Gecko引擎上的浏览器(例如SeaMonkey)。然而,许多浏览器出于兼容性原因使用术语“like Gecko”,因此我们必须确保匹配的是“Gecko”,而不是“like Gecko”。
} elseif (strpos($_SERVER['HTTP_USER_AGENT'], 'Gecko') && !strpos($_SERVER['HTTP_USER_AGENT'], 'like Gecko') !== FALSE) {
echo '<link type="text/css" href="moz.css" />';
接下来我们将识别Opera浏览器。Opera在v12版本之前使用了Presto
引擎。从v15开始,他们开始像Chrome一样使用Blink引擎。v12及更早版本的UA中包含两个独特的单词,而v15+没有--Opera
和Presto
。您可以针对其中任何一个进行定位,因为它们总是同时存在。对于v15,Opera开始在UA中使用OPR
。
} elseif (strpos($_SERVER['HTTP_USER_AGENT'], 'Presto') !== FALSE) {
echo '<link type="text/css" href="o.css" />';
} elseif (strpos($_SERVER['HTTP_USER_AGENT'], 'OPR') !== FALSE) {
echo '<link type="text/css" href="normal.css" />';
接下来是Safari。Safari使用AppleWebKit作为其渲染引擎,但我们不能只针对它,因为Chrome也为了兼容性而在其UA中包含了AppleWebKit和Safari。因此,我们需要搜索AppleWebKit而不是Chrome。
} elseif (strpos($_SERVER['HTTP_USER_AGENT'], 'AppleWebKit') && !strpos($_SERVER['HTTP_USER_AGENT'], 'Chrome') !== FALSE) {
echo '<link type="text/css" href="webkit.css" />';
最后,我们来到了Chrome。Chrome在v27之前使用AppleWebKit。随着v28的发布,他们转向了Blink引擎。我们可以针对这两个引擎进行目标定位,但这需要大量的代码。考虑到Chrome现在已经接近v70,我们只需搜索
Chrome
,因为几乎没有人仍在运行Chrome的webkit版本。
} elseif (strpos($_SERVER['HTTP_USER_AGENT'], 'Chrome') !== FALSE {
echo '<link type="text/css" href="normal.css" />';
最后但同样重要的是,你的备用/否则。
} else {
echo '<link type="text/css" href="normal.css" />';
}
现在,我使用了css文件来引用供应商前缀以实现定位的效果。根据需要随意调整,使其按照您的要求完成相应任务。希望这对您有所帮助。