我最近看到了一些关于避免编码到特定浏览器的信息而是使用功能/错误检测.似乎jQuery的创建者John Resig是功能/错误检测的忠实粉丝(他有一个很好的演讲,其中包括对YUI Theatre的讨论).我很好奇人们是否发现这种方法在实践中有意义?如果当前版本的浏览器中不再存在该错误(这是IE6问题但不是7或8)会怎么样?
对象检测的最大优势在于您只使用客户端浏览器可用的对象和功能.换句话说,给出以下代码:
if (document.getFoo) { // always put getFoo in here } else { // browsers who don't support getFoo go here }
允许您在不命名的情况下干净地分离出浏览器.这很酷的原因是因为只要浏览器支持getFoo
你就不必担心它是哪一个.这意味着您实际上可能支持您从未听说过的浏览器.如果您定位用户代理字符串找到浏览器,那么您只能支持您知道的浏览器.
此外,如果以前不支持的浏览器getFoo
获得该程序并发布了新版本,则根本不需要更改代码以允许新浏览器利用更好的代码.