【发布时间】:2011-10-24 19:46:51
【问题描述】:
【问题讨论】:
标签: html browser cross-browser modernizr
【问题讨论】:
标签: html browser cross-browser modernizr
我没有使用过 Browserhawk(事实上,直到现在我才听说过),所以请不要认为我的意见是绝对正确的。
但是,我确实知道 browsecap.ini,并且花了一些时间阅读 Browserhawk 网站,我相当肯定它也是一个服务器端浏览器检测工具。
如果是这样,那么答案是“是”。当前的最佳实践是避免使用服务器端浏览器检测,而是使用客户端特征检测。而这正是 Modernizr 所做的。
功能检测允许您根据用户浏览器的功能对您的网站进行更精细的调整,而不是简单地阻止拥有(或没有)特定浏览器的用户。如果需要,它还允许您为特定功能实施特定的后备解决方案。
由于浏览器市场的快速变化,从服务器端检测用户的浏览器是一个问题;您需要不断更新浏览器检测脚本以应对新版本。
此外,浏览器检测脚本可能无法正确检测到稍微不常见的浏览器或浏览器外壳的用户,因此即使他们的浏览器应该能够显示该网站,他们也可能无法使用使用它的网站。此外,一些用户可能没有提供正确检测其浏览器所需的用户代理字符串;它被某些代理、防火墙等阻止,某些浏览器也允许对其进行修改,因此如果用户愿意,它很容易被欺骗。
但是,我已经竭尽全力促进特征检测而不是浏览器检测,我需要指出所有这一切的一个例外,那就是 IE。
旧版本的 IE 有很多错误。这与简单地缺少功能不同,因为您不能如此轻松地主动检查错误。如果您遇到 IE 错误的特定问题,那么进行浏览器检测以避免它们是合法的。 (如果您只关心浏览器支持的内容,而不是实际的错误,则特征检测仍然有效)
但即使在这种情况下,也不需要像 browsercap.ini 或 Browserhawk 这样的工具。 IE 对Conditional Comments 的支持很有帮助,它允许您为 IE 添加特定代码,而无需特意去检测它。
【讨论】: