我今天非常自豪。在最近的一次投票中,我们询问了
您希望所有浏览器都有条件注释吗?
超过一半的人说:不,这违背了 Web 标准。
就像有人在你面前晃动一块巧克力棒,你却说“不,我在节食”。就像你朋友都跳桥了,你却没有跳。就像你对毒品说不。就像你停下脚步,卧倒,翻滚。你是这场事业的英雄。
我也不会责怪任何人投下其他票。这是一次投票。我询问了你的意见,你给出了你的意见。但你必须承认,当有人提供了一些短期内可能有助于解决问题的东西时,它赋予了设计师权力,而且没有明显的直接弊端,但仍然有人说“不,我们不想要它”,这真的很酷。他们能够考虑长远,并决定,如果我们突然开始实施简单的方法来针对特定浏览器提供特殊内容,那将是一件坏事。
侧边栏中很快就会出现一个新的投票来替换这个。
我想,能够直接针对像 Chrome 和 Firefox 这样的不支持最新技巧的旧版本浏览器会很棒,但最终,提供高质量的 HTML 和 CSS 比追逐每个可能存在的错误的解决方案更重要。
反过来,我在几个项目中使用了 http://www.modernizr.com/,只是为了帮助自己进入 CSS3 世界,我想知道这是否算作反 Web 标准?
Chrome 会自动更新。Firefox 用户几乎也是如此,他们不会自动更新吗?因此,无需针对他们提供旧版浏览器支持。
Chrome 至少在 Mac 上不会自动更新,我目前正在使用 FF4 编写,但我确信仍然有许多 FF3.6 用户存在。
我就是其中之一……: ) 我需要做一下。
我认为最好只针对从 IE6 开始的旧版本 IE。所有其他浏览器用户都足够精明,可以更新它们(如果浏览器没有自行更新),我只支持 Firefox、Chrome、Opera、Safari 的最新版本……你们怎么看?
即使是最现代版本的任何浏览器也会存在一些错误。能够绕过它们会很好,至少在发布包含修复程序的新版本之前。
我希望所有浏览器都有它们。有趣的是,Chris 为我们不想要它们而感到自豪,而实际上,我们一直在为 IE 使用它们,因为它是在 IE 中解决一些问题的唯一或最佳方法。支持它们不会对标准造成任何影响,除非所有浏览器供应商都变得如此懒惰,以至于他们会说,“哦,是的,这是一个错误,但我们会让人们使用条件语句来绕过它。”
在当今时代,我认为这种情况不会发生……以 IE9 和 10 为例。他们仍然使用条件注释,但越来越符合标准。
所有浏览器总是会有一些错误,因为是人创造了它们。条件注释将是一个简单而实用的方法来解决现代或旧浏览器的错误……不是为了解决缺乏标准支持的努力,而是为了解决不可避免的人为错误。
这不是解决问题的唯一或最佳方法。有很多好的解决方案,具体取决于你的问题。
仅举几个例子:
– 使用 PHP(更好)
– WordPress 提供浏览器检测(以及许多其他 CMS)
– JavaScript 具有用于检查浏览器的本机工具
– jQuery 有简单的方法可以检查
– 除 PHP 之外,我想不出任何不支持检查浏览器的服务器端语言。
人们使用它们是因为方便,而不是因为它是正确选择。我并不是说我自己没有犯过错,我只是说有很多好的解决方案可以不用两比特黑客。
你错了。在服务器端检查浏览器绝对是你可以想到的最糟糕的解决方案。唯一的方法是通过 USER_AGENT 标头,这通常会因各种原因而被更改,因此不可靠。
在客户端检查浏览器也不合理。根本没有可靠的方法可以做到这一点。
你能做的最好的事情是通过 JavaScript 进行功能检测。你只需检查你是否可以做某事,无论浏览器是什么。但这只有在 JavaScript 启用时才有效。
条件注释是在 JavaScript 不一定启用时执行浏览器特定操作的唯一可靠方法。
另外,如果我错了请纠正我……但条件注释不是更“便宜”吗(更少的服务器和计算机工作量、更少的代码、更少的请求……)比使用 JavaScript、PHP 或 jQuery 来完成这项任务?
Andrea,这就是整个关于是否应该使用它们,而不是关于它们是否更便宜的争论,它们确实更便宜。
我并没有主张哪种方法更好(正如你所说,我的列表中有 JavaScript),我只是不同意条件注释是正确的选择。
我意识到我写了 PHP(更好),这更多的是一个打字错误,我的意思是使用条件注释以外的选择更好,而不仅仅是那个例子(正如你所看到的,它在我的列表中出现了两次)。
此外,与使用 USER_AGENT 不可靠相同,JavaScript 也不可靠,任何人都可以修改请求或浏览器设置来破坏系统,如果这是一个安全问题,应该有冗余检查。
我甚至在一些真实网站中使用它们,因为我不关心 IE 方面的兼容性。
如果我成功创建,我将在我的网站上使用它。
虽然我完全同意投票的结果,但我认为问题的措辞方式可能导致结果略有偏差。即使有人不理解这个问题,也很明显,"是"被认为是消极的,而"否"被认为是积极的。
不算什么大问题,但我很好奇,如果选项只是"是"、"否"或"我不关心",结果是否会那么极端。
我们能直言不讳吗?唯一真正有问题的是 IE。而且它们不会自动更新,使用 IE 的用户通常仍然使用 AOL。
科技发展得太快,不更新是不行的,所以我说,不使用旧浏览器,现在是升级的时候了。
Opera 有问题,Chrome 也有问题(很少,但确实存在),而且并非所有 FF 用户都会更新……通常是支持这个,你支持那个的问题,但也存在一些错误。
– 对电脑专家说升级浏览器是可以的,但你不能对订购(并为之付费)的网站的客户说这样的话……
HTC 闪屏幻灯片代码
演示:http://www.htc.com/us/#/?slide=0
下载:http://www.lazywebdesign.com/htc-flash-slideshow-code/63
恕我直言,这真是个麻烦。
这将是许多其他针对浏览器的方案之一。让我们面对现实吧:即使我们使用非标准的方法,我们也需要针对浏览器……好吧,仅仅因为要面对非标准的行为。
我完全赞成设计师可以决定他们想要针对哪些浏览器。但经历过一个只关注 SEO 优势以达到营销目的的客户后,你就会很快明白,为了让你的结果不产生偏差,你的设计必须尽可能相似。统计数据应该指导你决定支持哪些浏览器,以及是否可以为了用户体验和跨浏览器体验而省略某些功能。
但仍然,没有条件注释的生活将是理想的 :) *白日梦*
我希望他们能够针对可编辑内容的不同版本 - 实现之间的差异是荒谬的,而且没有功能检测!我不得不通过 JavaScript 检测 CSS 前缀(-moz、-o、-webkit)(我认为这比尝试使用用户代理字符串更好)。
我希望客户能停止说“我不是技术人员”和“我怎么知道”之类的话,同时还坚持使用 Windows 2k 和 IE6。
我认为我们正在总结许多设计师的美梦,这些美梦在短期内不会实现。
也许 Chris 可以做一个关于我们最常使用哪些方式进行功能/浏览器检测的调查?
我认为如果我们能够通过条件语句直接检测支持的内容,而不是检测浏览器,那就更好了。
这样,即使浏览器更新了或添加了新功能(或者如果功能被删除了),我们仍然会有一个防弹的方法来针对这些功能。
读完这篇文章后我第一个想到的是什么?
Chris 意识到我们并没有那么愚蠢 xD
开玩笑,谢谢你的网站!
我几乎从不使用条件注释(或其他针对浏览器的黑客),但我的网站在各种浏览器中都显示正确。诚然,我已经有一段时间没有支持 IE6 了,除非是专门要求(并付费的)。
对调查结果感到满意。我认为如果我们对所有浏览器都有条件注释,那将鼓励不良编码,并会导致浏览器供应商不太关注标准,因为他们知道开发人员会使用条件注释来修复它。
我不得不怀疑那些点击“不想要它们”的人是否也在心里想着“我只是希望所有浏览器都符合标准。”
对于不支持 IE6 的开发人员来说,当你为一家拥有大型客户的机构工作时,这往往不是一种选择。即使我们的分析显示 IE6 只占他们流量的 2%,但仍然比每月 3000 次访问要好。试试告诉一个客户,每个月只有 3000 人会看到一个损坏的或格式稍微错误的网站。不幸的是,我们中许多人还没有选择放弃 IE6。条件语句 FTW。
不要误解我的之前的评论 - 我不想要条件注释... 或者至少我希望有一个我不想使用它们的環境
无论如何... 在目前的情况下,我相信,我们只需要再增加一个,那就是... WEBKit 吗?为了允许 WebKit CSS 和 JavaScript 回退,而无需让 WebKit 浏览器加载 JavaScript 文件...
好的... 新的进展,所以确实需要对所有浏览器进行条件注释 -
基本原因 - Chrome 和 FF 甚至在同一列中以不同的方式显示 Arial... 结果是在窄列中不同位置的断行... 我的意思是,如果遵守 SOME 标准如此困难,那么是的 - 请提供条件注释... 好的,这只是一些关于当前情况的抱怨 ;)