【发布时间】:2012-10-18 17:31:02
【问题描述】:
这个问题的原因
我知道浏览器检测永远不会 100% 可靠,因为用户代理标头总是可以伪造的,但是,我对此并不感到困扰。
虽然关于这个话题有很多问题,但它们似乎都很老了,所以为了获得最新的答案,我觉得我应该再问一次这个问题。
我目前正在使用 PHP browscap 检测浏览器名称和版本服务器端,然后将名称和版本返回到 javascript 变量中(不是一个很好的方法)。我需要这样做的原因只是为了在访问者未使用受支持的浏览器时向他们显示一条消息。
当前方法(类似的东西):
<script type="text/javascript">
var browser = new Array();
browser['browser'] = '<?php echo $browser_name; ?>';
browser['version'] = '<?php echo $browser_version; ?>';
browser['error'] = '<?php echo $browser_error; ?>';
</script>
做这个客户端会好得多,因为browscap可能会很慢,而且它会阻止我将值从PHP传递给javascript变量。 如果您认为使用 PHP 是一种更好的方法,请在您的回答中说明,这只是我的意见。
问题
因此,我的问题很简单,以下链接是确定浏览器名称和版本的可靠方法吗?
我知道需要添加新的浏览器,这不会打扰我。我更关心使用的算法是否可靠。
提前致谢
更新 1
要了解我的意思,请查看 Internet Explorer 7 或更低版本中的 https://www.icloud.com/。您将收到一条消息,指出不支持该浏览器。这对于 IE 来说很容易做到,因为您可以简单地使用 <!--[if gt IE...,但是,我需要测试所有浏览器。
【问题讨论】:
-
看看媒体查询
-
那你为什么又嗅探浏览器了?
-
@Asad 因为某些东西在特定浏览器中不起作用,例如在 Internet Explorer 7 及以下版本中具有透明背景的图像,使用 jQuery 动画效果不佳。众多示例之一
-
你的脚本可以通过js直接查找浏览器中是否存在这个特性,并做出相应的响应。这称为特征检测,优于浏览器嗅探slew of reasons。看看 Modernizr。
-
@Asad 好的,例如。我如何检测具有透明背景的图像是否可以在不看起来很糟糕的情况下进行动画处理?您肯定只能测试不透明度功能吗?
标签: php javascript browser-detection