人人享用网络:与网页从业者对话 — Rachel Andrew

Mozilla Hacks 上最近发表了一篇文章,“让网络为所有人服务”,探讨了浏览器兼容性方面的挑战和机遇。在这篇文章中,我们敦促开发者构建跨浏览器兼容的网页体验,以最大化曝光率和市场规模防止界面错误,避免用户永远离开;以及展现专业能力

今天,我们将开始一系列对网页开发者的访谈,他们因在网页开发领域取得的成就而广受赞誉。这些顶尖的专业人士是否像我们一样重视网页兼容性?为什么或为什么不?他们如何实现兼容性?

首先,我们将与 Rachel Andrew (@rachelandrew) 进行交流。

Rachel Andrew

Rachel 是 edgeofmyseat.com 的创始人兼总经理,该公司开发了 Perch CMS。她从 1996 年就开始从事网页开发工作;在此期间,她撰写了大量有关 CSS 和 HTML5 的书籍。她经常在网页开发大会上发表演讲(您可以在 9 月 12 日至 14 日于柏林举行的 View Source 2016 大会上看到她谈论 CSS 布局)。她在rachelandrew.co.uk 上写博客。


所以,Rachel,跨浏览器兼容性对你来说意味着什么?

认真地做好我的工作!就这么简单。

你多久需要考虑一次跨浏览器兼容性?你是否找到了能够减少你思考它的时间的方法,与你经验不足时相比?

现在我比以前考虑得少了。我们想要实现的那些核心功能,在跨浏览器之间都以一致的方式运作。我们没有过去那些疯狂的错误行为。新开发者应该去看看positioniseverything.net/explorer.html,看看我们以前不得不处理的那些东西!

当我使用新的规范时,或者当某些规范尚未完全实现时,或者当某些规范尚未在所有浏览器中实现时,我确实需要考虑兼容性。在这种情况下,我需要确保我使用该技术来支持浏览器的做法不会给那些使用尚未支持该功能的浏览器的用户带来问题。

是什么促使你付出额外的努力来构建跨浏览器兼容的网站或产品?

我一直都是从网络是为所有人服务的假设出发。

我一直都是从网络是为所有人服务的假设出发。而且我年纪也足够大了,明白这些东西变化有多快。在我看来,确保现在和一年后都能为用户提供良好体验的最佳方法,就是今天就让它们在尽可能多的浏览器和设备上正常运作。

有什么能让你放弃这种努力吗?

真的没有,因为这已经深深融入我的工作方式。我从经验中知道,当有人说网站只需要在特定浏览器中运行时,一年后情况可能会发生变化。

此外,在永续更新的浏览器世界中,跨浏览器工作实际上可能意味着改善使用市场份额最大的浏览器的用户的未来体验。举个例子:position: sticky,这可以让表格和导航上的标题变得粘性,在 Firefox 中已经支持了一段时间。它目前在 Chrome 中处于实验阶段。我超过 50% 的用户使用 Chrome,但是表格上的粘性标题是一个很好的增强功能,所以我可能会使用 position: sticky 为那些支持该功能的 Firefox 用户添加这个小功能。

我们认为跨浏览器工作是枯燥乏味的苦力活,与旧浏览器和奇怪的错误作斗争。但是,它也可能非常有趣和解放,尤其是在现在。总有新东西发布,如果你不关注谁发布了什么,你就会错过很多东西。

当 Chrome 发布他们的支持时,所有那些用户将突然获得那个不错的增强功能。网站对他们的体验会变得更好,而我无需发布任何代码。因此,了解不同浏览器中发布的内容意味着你可以利用新功能,并将这些增强功能留在你的网站中,让其他浏览器逐渐跟上。

我们认为跨浏览器工作是枯燥乏味的苦力活,与旧浏览器和奇怪的错误作斗争。但是,它也可能非常有趣和解放,尤其是在现在。总有新东西发布,如果你不关注谁发布了什么,你就会错过很多东西。

你能想起你遇到的一个特别令人恼火或有趣的兼容性错误吗?

没有,当然我遇到过。无论你进行了多少测试,你都可以肯定的是,在某些时候会发生一些细微或不太细微的问题。你会发现,你投入的时间越多,越能理解为什么事情会按这种方式运作,这些问题就会变得让人有点烦,而不是巨大的拦路虎。实际上,在非压力情况下练习跨浏览器工作意味着当出现令人困惑的问题时,你能够退一步进行调试,找出用户怎么会看到他们看到的东西,并将其修复。

你是否曾经不得不向客户或老板解释构建跨浏览器兼容的网站的重要性?你是怎么做的?

即使在浏览器大战的年代,我也从未提到过,我只是做了。这是我们的工作方式。

你是否曾经有过特定的经历,让你在接下来的项目中更加重视跨浏览器兼容性?

没有,我做这个已经很久了!但是,我以前经常处理其他人做出的工作的故障排除。他们不是从坚实的经验基础出发,然后不断增强,而是从只在一个浏览器中运行的东西开始,然后试图为其他浏览器进行兼容性改造。修复这种混乱通常意味着回到最基础,找出需要的核心体验,然后在那些支持完整体验的浏览器中构建回所需的结果。

在你的文章“过时地有利可图” 中,你说,“所有事情都应该在没有 JavaScript 的情况下完成。” 你认为过度依赖 JavaScript 会让网络的跨浏览器兼容性下降吗?

我认为人们通常会比实际需要更早地使用 JavaScript。即使他们不是将整个东西构建成 JavaScript 应用程序,也有一种倾向,认为 JavaScript 是各种事情所必需的,而这些事情实际上无需 JavaScript,或者可以通过没有 JavaScript 的方式来构建一个基础体验,然后在之后进行增强。

我不是说“不要使用 JavaScript”,但事实是,一旦你将 JavaScript 引入,你就会有一堆新的潜在兼容性问题。一种将这些东西逐一引入并鼓励在每个阶段进行测试的开发实践,会让整个过程变得容易得多。

你的流程、工具链等中是否存在一些部分让你可以轻松地合并或测试兼容性,你是否建议每个网页开发者将其纳入自己的流程?

我使用工具方面比较老派,但是我非常喜欢 BrowserStack,主要是因为我经常旅行,无法用虚拟机塞满笔记本电脑,也不能带着一堆设备到处跑。

你会告诉从编码训练营毕业的新开发者关于跨浏览器兼容性的什么?

从一开始就做对,你可能就不需要过多地考虑它。

如果你从一开始就弄清楚你要构建的网站、应用程序或功能需要做些什么,那么一切都会变得更容易。构建它,确保它在几个浏览器中运行。然后,也只有在之后,才开始添加花里胡哨的功能。不要让它在一个浏览器中运行,然后在发布前一天才想,"嗯,也许我应该在另一个浏览器中测试一下"。当你试图进行事后改造时,跨浏览器就会变得困难。

从一开始就做对,你可能就不需要过多地考虑它。


从 Rachel 访谈中得到的建议

  • 尝试使用即将发布或部分实现的浏览器功能,但只将它们用于增强基本功能,而不是提供基本功能。
  • 一次添加一个新功能,并在进行过程中测试其兼容性。不要等到最后再测试。
  • 如果你没有访问测试所需的所有机器和设备,请在 在线浏览器测试工具 中进行测试。

关于 Justin Crawford

Justin Crawford 是 Mozilla 的产品工程师,负责开发者营销和增长。他喜欢思考未来,构建事物和骑自行车。

Justin Crawford 的更多文章…