【问题标题】:Coding for IE vs Coding for W3C StandardsIE 编码与 W3C 标准编码
【发布时间】:2009-07-13 16:36:42
【问题描述】:

“我和其他高级开发人员之间的争论”系列的另一章:P

我的立场是,在进行 Web 开发时,应首先编写浏览器代码以遵守 W3C Web 标准,即使 Internet Exploder 拥有更大的市场份额(51% 到 79% 之间,取决于谁在做跟踪)。我的理由是:

  • 标准已被锁定,所有浏览器开发人员都在朝着至少 100% 无错误支持所有设定标准的方向发展。因此,代码应该围绕 Firefox/Chrome/Safari 编写和测试,它们比 IE8 更接近正确的标准支持,然后应该在 IE 中使用条件标签来解决它的错误。尤其是这种情况,因为您可以使用条件标签来解决 IE 错误,但是如果您尝试反向编码,则很难编写黑客来强制 Firefox/Safari/etc 正确显示编码损坏的 HTML/CSS .

  • 1234563每次出现更接近 Web 标准的新浏览器版本时都会修复他们的应用程序,从而使您最初的一些技巧现在破坏了布局。
  • 为支持更大的市场份额而编写损坏的代码,然后为较小的市场份额“破解”它,如果你有时间,这似乎是一种粗心的工作方式,并建议你认为 20% 的市场份额是微不足道的,我认为这与事实相去甚远。

我的合作开发者认为:

  • 不同的浏览器公司喜欢走自己的路,并不真正关心标准,因此尝试为标准编写代码是浪费时间。

  • 只要页面在这些浏览器中以仍然可用的方式粗略显示,为支持大约 20% 的市场份额而编写代码是不值得的。

  • 浏览器就是浏览器。它只是一个用于呈现文本的视口,我不应该太担心看起来完全正确的东西。

  • 反正他更喜欢 IE8,却不得不在 Firefox 中开发是件痛苦的事。

我是负责人,当然我可以说“这就是它的方式”,但我讨厌只是一个纳粹并说“我的方式或高速公路”;我认为最好让其他人理解我们为什么要以某种方式做某事,以便我们在继续进行时达成一致,因此我们遵循的约定会被坚持,因为它们背后的原因是值得赞赏的,而不是不情愿的跟着。

我可以对这个论点提出一些意见吗?

【问题讨论】:

  • 你应该把它变成一个社区维基,因为它是基于意见的。
  • 唯一的解决方案在于我的个人资料页面上的传记。

标签: internet-explorer standards w3c


【解决方案1】:

按照 W3C 标准开发,并使其在 IE 中看起来不错。它们并不相互排斥。

【讨论】:

  • 一路 W3C。如果我们没有标准,我们得到了什么?
【解决方案2】:

了解您的受众:他们是否关心您的网站是否符合标准?可能不会,除非您正在为 Web 开发人员狂热者编写网站。他们更可能不在乎,甚至不知道 W3C 是什么。

您的受众是否更倾向于选择特定的浏览器?请记住,并非所有网站都获得相同的浏览器分布。科技网站获得的 IE 访问次数少于一般网站。

实用:大多数网站的大部分点击都来自 IE。具体来说,IE 6 和 7。忽略 IE 的怪癖是无视现实。如果您不花时间使其在 IE 6 和 7 中运行,您将会有很多用户抱怨您的网站无法运行。IE 6 仍然是一个大型浏览器,大多数以 Microsoft 为中心的企业都在使用它。

现实一点:除了吸引狂热者之外,符合标准的 HTML 并不实用。理想情况下,所有浏览器都实现该标准。但他们没有。实施没有人完全实施的标准是不现实的。

最重要的是实现一个适用于所有浏览器 IE6 及更高版本的网站。如果您必须优雅地使用旧浏览器失败,请执行此操作。但是不要忽视它们。它们存在,用户不会使用不起作用的网站。通常,他们的企业要求他们不要使用不同的浏览器,因此建议他们升级不是一种选择。

【讨论】:

  • 我从来没有提倡忽略它们,而是建议开发到顶级,完整的标准,然后为树下的每个后续版本的 IE 提供补丁,围绕每个集合工作缺陷分开。
  • 我认为你应该从让它看起来适合所有主要浏览器的方法开始。不要“稍后返回”或放入有条件的黑客/代码,只需从一开始就让它看起来正确。说起来容易做起来难,但这是可以做到的。
  • 我同意,但有时需要条件代码才能使其看起来正确。两者通常是相互包容的。
【解决方案3】:

我和其他人一样喜欢标准,但老实说,这已经变成了一场宗教战争/鞭打男孩。

我看到的主要问题是这种模式:

  • 浏览器公司“X”生产浏览器 容错和尝试 显示格式错误的页面。 它们也偏离了沿线的标准 要么是出于偶然,要么是为了创建自己的新标准。
  • 没有经验的 Web 开发人员使用 浏览器“X”来测试他们的设计 他们继续前进,允许错误 他们的标记不会被发现。
  • 浏览器公司“X”现在被困在 任一断裂的位置 现有网站或维护已知 新版本浏览器中的缺陷。

不要成为这个循环的一部分。

【讨论】:

    【解决方案4】:

    我不确定您真正争论的是哪个版本的 IE,但这个 digg blog post 说明超过一半的 IE6 用户没有选择使用 IE6。

    对于浏览器的宗教争论不会改变这样一个事实,即您的许多用户可能无法控制他们如何查看您的网站。因此,这归结为业务决策,以及迎合那些可能有点落后的人的成本与收益。

    【讨论】:

      【解决方案5】:

      按照 W3C 标准开发,并使其在 IE 中看起来不错。它们并不相互排斥。

      有时他们是。如果是这样,按照 W3C 标准进行开发通常是明智的选择。当然,更大的问题是针对多个版本的 IE 进行开发;将硬性下限设置为 7 可能是个好主意,但这取决于相关编辑器。

      通过构建从根本上破坏但有选择地未破坏的设计,你只会让自己失败。

      【讨论】:

        【解决方案6】:

        实际上,企业必须满足其用户。意识形态是不够的。按照标准开发,然后使其在 IE 中工作。注释代码并解释在何处引入了 hack。如果您谈论的是 IE8,那还不错。如果你需要支持 IE7 甚至 6,那么你将有更多的工作。

        【讨论】:

          【解决方案7】:

          具有一定市场份额且最符合 ACID 测试的浏览器代码。为其他浏览器工作,并决定哪些浏览器你不会担心。

          对我来说,此时,这意味着:

          Firefox 的代码,在 IE 上工作,确保它在 Chrome 和 Safari 中的工作方式相同,而忽略其余部分。

          【讨论】:

          • 正是我的流程(FF,在 IE 中调整,检查 Chrome 和 Safari)。我有时也会检查 Opera。我想将 Konqueror 添加到组合中,但在大多数情况下它太有限了,所以它是一个很好的“优雅降级”检查
          • Chrome,IE,然后是 FF(我讨厌 ff fanbois)。你说的这个 Safari 是什么?
          【解决方案8】:

          上面的论点中有一些有趣的断言。供应商不关心标准。通过遵守标准来应对未来的应用。非 IE 占市场份额的约 20%。如果有一些经验证据支持或反对这些,它可能会有所帮助。

          在我看来,最重要的是,您声称“您可以使用条件标签来解决 IE 错误,但是如果您尝试反向编码,那么编写黑客来强制 Firefox/Safari/etc正确显示编码损坏的 HTML/CSS。”这种缺乏对称性的说法在我看来是不直观的,但如果属实,这是一个非常有力的论据。

          就个人而言,如果有人真的说“大致正确是可以的”和“不要担心……确切地说”,那么我将很难认真对待这些论点。

          为什么在 Firefox 中开发/为 Firefox 开发很痛苦?

          【讨论】:

          • “编写黑客来强制 Firefox/Safari/etc 正确显示编码损坏的 HTML/CSS 要困难得多”。
          【解决方案9】:

          我不喜欢 W3C,因为从那里出现的“标准”非常糟糕,这也是为什么每个人都以某种方式呈现一切不同的原因。

          IE 支持conditional CSS statements,它允许您调整适用于大多数浏览器的 IE CSS 怪癖。

          所以我认为最好的办法是编写看起来不错且按预期工作的 HTML(标准 schmandards),当您不得不做一些丑陋的事情以使其在 IE 中工作时,请使用条件 CSS。


          澄清我愤世嫉俗的 W3C 观点:大。球。的。泥。

          【讨论】:

          • +1 表示给出硬(最重要的是正确)答案。
          • 如果没有标准来定义它的外观,您如何确定什么看起来不错?
          • @jcollum:如果没有浏览器来显示结果,你如何确定什么看起来不错?
          • @jcollum,welbog:Hurf durf? W3C 标准是一堆乱七八糟的东西,每当他们添加其他东西时,它们就会滚成一个更大的泥球。是时候重新启动了。
          • @Will:我没有反驳你。多年来我一直这么说。
          【解决方案10】:

          我总是指导我的团队在设计时考虑到 Firefox(阅读“W3C 标准”),然后才填补 IE 所关注的古怪空白。我非常同意你的观点,因为这很有意义。

          据称,MS 一直试图让 IE 更兼容,但他们仍然遥遥无期……而其他浏览器,如 Firefox 和 Chrome,则可以从 MS 的错误中吸取教训。由于很大一部分网络用户仍在使用 IE 6,因此您总是需要添加特殊的条件检查来满足那些“缺失链接”的需求。

          考虑到 FireBug 和 Web Developer 等很棒的插件,我不明白为 Firefox 开发是多么痛苦。

          【讨论】:

          • @mgroves:我也不喜欢“M$”这个短语,但这并不会使他的回答无效。虽然,我承认,他的回答很像粉丝。
          • (-1) 如果您的团队从 Firefox 开始,他们将很难将其用于其他地方。 Firefox 有很好的工具,但它们鼓励您依赖这些工具,这会削弱您在没有它们的情况下工作的能力。如果你首先让它在 IE 中工作,你会发现移植到 FF 更容易,因为有可用的工具来找出问题所在。如果您从 FF 开始,您将不得不进行 hack 和 slash 以使其在 IE 中工作。如果您打算疏远您的 IE 受众,那么您的解决方案是迄今为止最简单的。
          • 所以你的论点是“不要使用 firefox,因为有用的工具会让你不喜欢使用其他浏览器”?为什么不从现在到永远放弃所有有用的工具呢?使用 Firefox 的意义不是因为一个人是不是 FF 粉丝,而是因为在大多数情况下,它会将所有内容呈现为浏览器都同意努力完全遵守的标准。 Firefox 还提供了一些有用的工具来帮助加快开发速度这一事实不应成为使用该浏览器的不利因素。
          • @devinb:郑重声明,我不是“FF 迷”。如果是这样,我不会在 IE 上阅读此内容。我喜欢 IE 7,但 IE 8 太糟糕了。
          • @Cerebrus:我不相信你是,我目前正在使用 Firefox,我也非常喜欢它拥有的工具。我只是说最后保存 IE 的概念在 web-dev 中不起作用,因为您会发现您经常将自己锁定在无法在 IE 中运行的代码中。如果您从 IE 开始,您会发现自己被困在了在 FF 中也不起作用的方式中,但是,FF 拥有可以让您挖掘自己的工具。所以,我说从 IE 开始,变得更容易,而不是从 FF 开始,永远不会结束。
          【解决方案11】:

          他的论点存在一个重大缺陷: 您的目标是哪个版本的 IE?

          网站可能在 IE6 中看起来很棒,在 IE7 和 8 中非常糟糕。或者在 IE6 和 7 中看起来很棒,但在 IE8 的默认(更符合标准)呈现模式下非常糟糕。

          IE6 支持正在下降; IE7 的使用率不久前超过了 IE6,而 IE8 正在慢慢获得关注。

          在网络上,为 8 年历史的浏览器设计是一个错误。首先为较新的浏览器设计,然后添加旧浏览器所需的内容。

          【讨论】:

          • 除了“8岁”浏览器还有20%的市场份额。你不能简单地忽略它。
          • 是的,但是一旦你为其他 80% 进行设计,然后你会回来并对其进行修复以使其在最后 20% 中正常工作。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-02-09
          • 2013-01-15
          • 2010-10-03
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多