我们已经听到了 瑞秋·安德鲁、克里斯·科伊尔 和 贝伦·阿尔贝萨 的观点。这些优秀的网站开发者都为实现跨浏览器兼容性提出了建议。我们跨浏览器兼容性访谈系列的第四位受访者带来了一些新的工具。
大卫·沃尔什 (@davidwalshblog) 在很小的时候就自学了 HTML、CSS 和 JavaScript,并很快将这些技能转化为职业。他在获得第一份前端开发工作后就开始写博客记录前端开发经验。如今,十年过去了,大卫的博客 每天都会被数万名网站开发者阅读,他们到那里去寻找开发技巧、教程和对开发者生活的思考。大卫曾在世界各地的 JavaScript 大会上发表演讲,包括伦敦 AJAX 和 BrazilJS。他目前在 Mozilla 担任前端开发者和布道者。
大卫,跨浏览器兼容性对你意味着什么?
跨浏览器兼容性意味着功能和设计不仅可以在不同的桌面浏览器中运行,还可以在不同的移动设备上的浏览器应用中运行,有时甚至可以扩展到 Xbox One 这样的游戏机。
你有多常需要考虑跨浏览器兼容性?你是否找到了可以减少思考跨浏览器兼容性所花费的时间的方法,与你经验不足的时候相比?
在 Mozilla 工作中,我经常会使用一些前沿的 API,包括 Service Workers、WebVR 和 A-Frame,因此我必须经常考虑跨浏览器兼容性。
跨浏览器兼容性的意义一直在发生变化,但始终存在。
在我职业生涯的早期,我也会考虑跨浏览器兼容性,但当时的環境截然不同:IE6 停滞不前,用户代理检测 很常见,WebKit/Safari 和 Firefox 都在使用 自己的前缀 实现功能,这使得使用新功能变得很困难。
跨浏览器兼容性的意义一直在发生变化,但始终存在。
是什么促使你付出额外的努力来构建一个跨浏览器兼容的网站?
Mozilla 的网站会被数百万来自不同浏览器、设备和各种版本的用户的访问,这意味着跨浏览器兼容性是必不可少的。此外,我们还希望尽可能让每个人都获得相同的体验。
每个人都应该尽可能获得相同的体验。
有什么可以让你放弃这种努力?是什么?
我怀疑一些开发者或组织可能会将跨浏览器兼容性视为时间和成本上的负担。幸运的是,各浏览器已经达成共识,认识到标准的重要性,并且在功能方面的发布时间表大致相同,所以除非你使用的是前沿的功能,否则跨浏览器兼容性并没有过去那么难。
你是否曾经需要说服客户或老板构建一个跨浏览器兼容的网站很重要?你是怎么做的?
当然,尤其是在我为一家小型代理商工作的时候。跨浏览器兼容性被视为一项耗时的任务,一项分析数据无法证明其必要性的任务。我当时的论据是,跨浏览器兼容性将使网站“面向未来”,以防出现新的浏览器,事实证明我是对的:Chrome 使用了 WebKit 引擎,迅速占领了市场。Mac 用户(Safari)不再是 WebKit 引擎和风格/功能差异集的唯一用户。
你是否曾经有过特定的经历让你在接下来的项目中更加重视跨浏览器兼容性?
是的 - Chrome 的崛起!Chrome 不仅使用了 WebKit,而且还转向了自身的引擎,并开始按照自己的时间表实现功能。这一切似乎都发生得很快,这对我的启发很大!
你写过很多关于工具的博客 - 例如,就在今年夏天,你谈到了 Slimer.js、Phantom.js 和 Wraith,以及许多其他工具。在你的清单中,哪些工具(或技术)最适合编码兼容的网站或测试兼容性?
Selenium 测试是一个很好的起点,无论你在它之上使用哪种抽象。我真的很喜欢 Slimer.js、Phantom.js 和 Wraith,正如你提到的。事实是,新的工具一直在不断涌现!
你对从编码训练营毕业的新开发者关于跨浏览器兼容性会说什么?
我会告诉他们,他们非常幸运地错过了浏览器各自为政的早期时代!他们应该从一开始就树立跨浏览器兼容性(除了前沿功能之外)是必须的理念,并且如果他们从一开始就拥有这种理念,他们就会一直拥有它。
大卫访谈中的建议
- 不要高估使网站跨浏览器兼容的难度。跨浏览器兼容性并不像过去那么难。
- 尝试使用命令行工具(如 Slimer.js、Phantom.js 和 Wraith)来自动执行部分浏览器测试。
- 使用 Selenium 进行功能测试 - 当然,使用多个浏览器 - 可以更轻松地发现新代码中的浏览器破坏性错误。
关于 贾斯汀·克劳福德
贾斯汀·克劳福德是 Mozilla 的产品工程师,负责开发者营销和增长。他喜欢思考未来、构建事物和骑自行车。