代码之家  ›  专栏  ›  技术社区  ›  Patrick McElhaney

跨浏览器网站的最佳实践是什么?[关闭]

  •  39
  • Patrick McElhaney  · 技术社区  · 5 年前

    (我希望这是一个权威的社区维基。我把它从我自己的答案播种到 this question .)

    指定所有内容

    很多跨浏览器的问题都是这样的:你没有指定什么,不同的浏览器会做出不同的假设。因此:

    声明有效的doctype

    以我的经验,一个“严格”的doctype可以让IE表现得更好(在IE7中支持CSS:hover selectors之类的东西)。

    This article

    使用Web标准

    避免使用特定于浏览器的标记,或者仅当它在其他浏览器中的失败对站点体验没有意义时才使用它。

    你不必把每件事都做到完美,但验证是很好的反馈。作为 Jeff said :

    了解规则和界限有助于你定义你在做什么,并为你同意或不同意提供合法的弹药。你可以做一个明智的选择,而不是一个随机的“我只是这样做,它的工作”之一。

    想象一下,你打开了一个段落标签,却从未关闭它。如果你打开一个列表标签,你的意思是它是否在段落内?验证将帮助您捕捉这些信息,关闭标记并消除歧义。

    考虑CSS重置

    不同的浏览器采用不同的基线CSS规则。你可以通过预先明确地消除差异来帮助他们采取相同的行动。埃里克·迈耶 CSS: The Definitive Guide ,使用 this reset . 另一个流行的选择是 YUI Reset CSS .

    使用Javascript库进行DOM交互

    多浏览器测试,最后处理IE

    在多个浏览器中进行测试。一般来说,你会发现非IE浏览器的行为类似,IE是一个特例-尤其是如果你遵循上面的建议。必要时,您可以在单独的样式表中添加IE hack,并且只为IE用户加载它。

    Quirksmode.com 是查找随机浏览器差异的好地方。

    Browsershots.org 可以帮助显示您的页面将如何在各种浏览器和操作系统中显示。

    优雅地失败

    没有一个网站在所有浏览器中都是完美的。如果用户没有Flash、Javascript或高级CSS等,那么您希望您的站点仍然可用。设计时要牢记这一点:

    检查纯HTML

    尝试用纯HTML加载你的站点-没有样式,没有脚本。有菜单选项吗?主要内容在次要内容之前吗?网站是可用的,即使丑陋?

    考虑测试驱动的渐进增强

    中描述 this article ,这种技术使用javascript在页面上使用浏览器之前检查浏览器是否具有给定的功能,例如支持给定的CSS属性。它不同于浏览器嗅探,因为它测试的是功能,而不是特定的浏览器。

    7 回复  |  直到 4 年前
        1
  •  13
  •   Jeffrey Hines    15 年前

    使用jQuery这样的库来抽象DOM、AJAX和JavaScript中的差异。

        2
  •  8
  •   Psycho_Penguin    15 年前

    确保尽可能将HTML、CSS和Javascript保存在不同的文件中。在HTML文件中混合结构、表示和行为只会使查找和修复问题变得更加困难。

        3
  •  2
  •   Ken White    15 年前

    在Firefox中使用Firebug:

    • 调试/逐步完成JS。
    • 看看你的样式表是如何被解释的,并在运行中修改它们,看看如何解决你的问题。
    • 查看您为远程资源打了多少个电话,以及这些电话需要多长时间。

    Chrome和IE8有类似的内置工具,可以用于同样的事情。

    歌剧和狩猎 Firebug Lite .

        4
  •  1
  •   user1528186    4 年前
    1. 在样式表开始时使用CSS重置。。。

      你可以买一个 here ...

    2. 你可以验证你的代码 here 通过页面链接或简单的复制粘贴页面元素

        5
  •  0
  •   DisgruntledGoat    15 年前

    我的原则是 使用严格的doctype . HTML或XHTML是不错的,但是使用严格的doctype可以消除几乎所有的浏览器怪癖,尤其是在IE7+中。

    想象一下,你打开了一个段落标签,却从未关闭它。如果你打开一个列表标签,你的意思是它是否在段落内?

    实际上,你不能在 <p> 标记,这就是为什么spec允许您省略结束标记。如果启动列表时没有关闭段落,则该段落将隐式关闭。验证器也不会抱怨。

    那不是说你 不应该 关闭标记,因为它通常使代码更容易浏览(您不需要记住上面的规则)。

        6
  •  -1
  •   zvolkov    15 年前
        7
  •  -1
  •   Glenn p    13 年前

    我认为使用最佳实践是可行的,渐进式增强是以用户为中心设计的,需要与所有设计师一起完成。我相信在浏览器上进行大量测试是确保显示正确内容的一个好方法,许多开发人员对此进行了研究。