【问题标题】:Browser Overflow ... How to ensure Cross Browser, Cross Platform Testing and Compatability [closed]浏览器溢出...如何确保跨浏览器、跨平台测试和兼容性 [关闭]
【发布时间】:2013-06-17 08:55:34
【问题描述】:

我的团队正在开发一个新网站,该网站应该兼容跨浏览器(IE 8+、Chrome、Safari、Firefox、Opera)和跨平台兼容(台式机、平板电脑、智能手机)。

我们一直在研究实现这一目标的许多新方法,例如 HTML 5、响应式设计、使用 JS 库将大量浏览器的混乱从用户中抽象出来,但自从浏览器甚至 MVVM 以来,我一直面临的一个主要问题是浏览器的变化速度有多快。 Chrome 和 Firefox 都使用持续交付模型,测试变得越来越难。而且从外观上看,其他网站也有同样的问题(最近,关于一个网站是否可以在特定浏览器中运行似乎受到了打击或错过)

  • 您或您的团队对新推出的浏览器的测试有什么建议?
  • 在开发过程中,您会采取哪些措施来降低浏览器更新时出现代码中断的可能性?
  • 您如何决定何时放弃对浏览器版本的支持?

【问题讨论】:

    标签: html css web cross-browser


    【解决方案1】:

    注意:我已更改您的问题的顺序,将较长的答案留在最后。

    您的问题

    您或您的团队对新推出的浏览器的测试有什么建议?

    实际上,正如您所说,Chrome 和 Firefox 正在持续交付,因此简化了流程。您拥有的最后一个版本通常始终是用户拥有的版本。

    对于任何其他浏览器(以及 Chrome 和 Firefox 旧版本),只需为每个浏览器选择一个版本并充当“高通过滤器”,测试您选择的版本以上的任何版本。

    您如何决定何时或何时放弃对浏览器版本的支持?

    查看浏览器使用统计数据。有很多资源,例如statcounterw3counterw3cschoolswikimedia。如果可能,将分析跟踪器添加到您的页面,您将获得有关访问者用于访问网站的设备、平台、浏览器及其版本的数据。

    在开发过程中,您会采取哪些措施来减少浏览器更新时出现代码中断的可能性?

    关键是使用基于现有标准的明确定义的方法。继续阅读个人推荐。

    简化交叉浏览的工作流程

    第 1 步:引导

    首先决定:Graceful degredation versus progressive enhancement。两者都是有效的技术,但使用第一个来修复现有项目和第二个用于新创建的项目是有意义的。

    然后选择库到avoid typing existing code,重点关注 3 种语言:JavaScript、CSS 和 HTML。 HTML5 (+CSS3) 是当今更好的选择,但必须提供对旧浏览器的支持。以下库可以轻松支持它们:

    • modernizr 用于 js 或 css 的特征检测和条件加载。
    • jQuery 用于 ajax 和 dom 相关任务。
    • normalize.css 用于规范默认浏览器样式,而不仅仅是“重置”它们。

    请注意,上面列出的所有 js 库都允许自定义构建,这在性能很重要时很重要。

    Html5 Boilerplate 提供了一个强大的模板,从该模板开始布局。它包括modernizr、jQuery 和normalize.css。 Its github repository 是学习跨浏览技术的好资源。 This article on its wiki 有一组不错的链接可以开始学习。

    第 2 步:完成工作

    设计应该是移动优先和响应式的。 This article on html5rocks 很好地介绍了原因和方法。

    在“工作”时:

    • 关注the w3c standards。尽可能避免使用 hack,尤其是 CSS hack。经常查看HTML5 specification,因为它非常不稳定。

    • 在编写 javascript 时注意ECMAScript 5 功能。依靠库来避免因浏览器实现不足而导致的代码中断。 Do not extend the DOM.

    • Automate tests 尽可能。 manually tested 布局和特别布局优化,包括动画,因为它更快,但 UI 功能(如表单提交)可以通过自动化测试完美测试。

    • 使用工具来简化任务。 Chrome + devtoolsFirefox + firebug 是非常基本的必备工具,但有很多工具可以简化跨浏览测试,甚至自动化这些测试。

    附件:工具和资源

    跨浏览器测试

    • Browserstack 真是太棒了。允许在所有设备、平台、浏览器和版本上进行测试。

    • Browserling 是浏览器堆栈的替代品。它是 developed and maintained,作者是 Peteris Krumins 和 James Halliday,他们都是 the node.js community 的公认成员和知名开发人员。他们还发布了一个名为 testling-ci 的自动化流程工具,但这仅在后端使用 node.js 时才有意义。

    • modern.ie 提供了简化 Internet Explorer 测试的工具。该站点由 Microsoft 开发,通过浏览器堆栈和可下载的虚拟机映像以及预安装的软件提供实时测试。

    “响应式设计”的适应性测试

    • respon.si 是一个在线工具,用于测试布局的视觉外观。它允许选择分辨率,因此对于响应式布局测试很有用。请注意,任何其他选择分辨率的工具都可以轻松做到这一点。

    【讨论】:

    • w3schools 统计数据适用于主要由开发人员访问的 w3schools。最好的统计数据是您自己的日志文件。
    • @Rob 我完全同意。每个人都应该记住the source of the statistics。我想我很好地解释了分析跟踪器的好处,这些外部资源最适合项目启动分析。你觉得还不够清楚吗?感谢您的反馈:D
    • 你也可以试试browserstack.com/responsive
    【解决方案2】:

    您或您的团队对新推出的浏览器的测试有什么建议?

    作为definition of done 的一部分,我们支持以下桌面浏览器:

    • IE8+
    • 火狐3.6
    • Firefox(最新)
    • Chrome(最新)
    • Safari 6

    对最新版本的 Firefox/Chrome 的支持很好,因为它们都提供自动更新,所以如果有人在旧版本的浏览器上遇到问题,我们无法控制,他们应该更新。

    大部分 Firefox/Chrome 测试都可以在我们的机器上完成,但不同操作系统处理字体的方式显然存在差异,并且本机表单元素的一些怪癖可能会或可能不会延续到 Windows 上的版本。

    为了在 OS X 上测试 Firefox 版本,我使用了我创建的“Install all Firefoxes”脚本,以允许我并排运行多个版本的 Firefox。

    我们的开发团队使用 Ubuntu 和 Mac OS 作为他们的环境,因此我们有一台专用机器,每个版本的 IE 都有虚拟机,Windows 上的 Chrome/Firefox 和 OS X 上的 Safari 6。

    这些虚拟机是使用modern.ie 提供的映像设置的。我们在虚拟机开启的情况下远程访问机器,这样我们就不需要中断工作流程并转到另一台机器。

    您在开发过程中会采取哪些措施来降低浏览器更新时出现代码中断的可能性?

    显而易见的事情是避免 CSS hack,并确保编写的 HTML/CSS/JavaScript 符合我们的代码标准以及我们对完成的定义。

    如果我们使用实验性 CSS 功能,我们确保我们提供供应商前缀和最后的 w3 属性定义:

    -moz-foo: bar;
    -ms-foo: bar;
    -o-foo: bar;
    -webkit-foo: bar;
    foo: bar;
    

    显然这会引入一些技术债务,但如果您为 CSS 使用预处理器,则可以减少这种开销。

    我们为 IE 保留一个单独的样式表并使用条件 cmets 加载它,这样我们就可以修复 IE 中的问题,而不会影响其他浏览器前端其余部分的完整性。不过,最近有一种运动将其移至shame.css,您可以在此处阅读:http://csswizardry.com/2013/04/shame-css/

    您如何决定何时放弃对浏览器版本的支持?

    谷歌分析。在 Google Analytics 中按浏览器类型进行细分非常有用。当特定浏览器的使用率下降到 10% 以下时,是停止为其开发新功能的好时机。

    您也可以做一些激进的事情,比如放弃该浏览器的所有 hacks/styles,但为了更顺畅的过渡(并鼓励人们升级),最好简单地停止为旧版浏览器开发,并且可能有条件地停止显示一条消息。

    我们最近放弃了对 IE7 的支持,现在使用 IE7 的访问者会收到一条消息,告诉他们升级,他们不会再获得任何修复或附加功能。

    移动设备完全是另一回事,如果您的网站完全响应,那就是额外的痛苦。

    我们有一堆不同尺寸/版本的 Android 设备、几部旧 iPhone 和一台 iPad 在办公室里闲逛,我们用它们来测试大多数移动浏览器。

    显然,屏幕尺寸、DPI、浏览器版本等存在差异。在这方面,您能做的最好的就是迎合最常见的情况,并在出现问题时修复它们。

    【讨论】:

    • 重新支持“最新”版本的 Firefox:请记住,Mozilla 还有一个扩展支持版本(当前为 FF17),旨在供企业和其他不想升级的人使用经常。如果您支持 Firefox,则应将此作为您要支持的最低版本,而不仅仅是最新版本。
    【解决方案3】:

    使用网络标准进行设计和开发。验证网络平台。已经列出的所有库/解决方案/等都是惊人的并且非常有用,但是如果您坚持标准,您会发现您需要这些库越来越少......至少对于优雅地降低用户代理支持。我发现我越来越多地使用它们来进行渐进增强。

    【讨论】:

    • 最大的问题是浏览器对现有标准的实现不足。
    • 这就是为什么使用它们如此重要。这很有趣 dwwd 在这里被否决了。弱。
    • 我投了反对票,原因是您对优雅降级的评论。看来您认为这是方式,我认为这只是一种技术。
    • 显然您错过了评论中的 pe...您知道,渐进增强。看来我不认为是这样。
    • 我有点迷失在你的表达中,也许是因为英语不是我的母语。您能否向我解释一下您上一条评论中的“pe”是什么意思?提前谢谢你。
    猜你喜欢
    • 1970-01-01
    • 2011-02-03
    • 2012-05-17
    • 2012-08-09
    • 2011-06-18
    • 1970-01-01
    • 2011-06-07
    • 1970-01-01
    相关资源
    最近更新 更多