【问题标题】:Should in-between browser compatibility issue be handled?是否应该处理中间浏览器兼容性问题?
【发布时间】:2018-01-09 05:43:35
【问题描述】:

当我们谈论浏览器兼容性时,大多数时候我们将其定义为应用程序将支持的最低浏览器版本列表。例如:

IE9+、Firefox 25+、Chrome 32+等

在测试兼容性时,我们通常会测试基线和最新版本。 如果我们想让它更广泛,我们可以使用 SauceLabs 等工具来测试介于两者之间的所有版本。

我的问题不是我们是否可以测试兼容性,而是我们应该或者我们应该如何考虑应该支持哪个版本的浏览器。

例如,我遇到了aurelia-polyfills 的问题。

库无法在 Firefox 35 中的 (function(o, s) { ... }(Object, Symbol)) 行和 Symbol is not defined 加载。

此代码在 Firefox 29 和最新版本 (54) 中运行良好。不知道35前后有多少版本会遇到这个问题。

IMO,这个问题更多地与 Firefox 相关,而与库关系不大,因为它应该将 Symbol 取消引用为 undefined 并让代码检查并正确处理它。类似于IE没有正确处理enum等关键字的问题。

现在的问题是,这应该被认为是库的错误还是库应该声明不支持这个中间版本的 Firefox?

一方面,排除这个版本是有意义的,因为它是浏览器的“错误行为”。图书馆作者不能对浏览器提出的任何和所有问题进行打击。尤其是现在,与过去相比,浏览器的新版本更加频繁。有些错误是必然会发生的。

另一方面,这正是“浏览器兼容性”的意义所在,应该加以处理。库作者不能忽略它们,因为它们是客户使用的。但在这种特殊情况下,它不会起作用,因为无论何时访问Symbol 都会导致系统崩溃。

另外一点是,当浏览器兼容性表更新时,它会“转移”到那些有问题的版本。

这意味着要么将兼容性表从“IE9+, Firefox 25+, ...”更新为“IE10+, Firefox 35+,...”和“WTF”,或者强制使用更窄的表,例如“IE10+、Firefox 52+、……”。

我认为我们要么硬着头皮继续支持“所有最新版本”,要么在兼容性表中留下一些漏洞,只支持“黄金”版本。

你会推荐什么?

顺便说一句,我对 Firefox 没有任何意见,仅以它为例。

【问题讨论】:

    标签: javascript browser cross-browser compatibility


    【解决方案1】:

    对于自动更新浏览器(Chrome、FX、Safari、Edge)仅支持最新版本。军团可以冻结旧版本,但支持旧版本是您既可以收费也可以反对的东西。如果客户想要 FX35 支持,那么这将是一个非常单一的请求 - 当您不知道他们会想要它时,花时间测试它是不划算的。将这笔钱花在绝大多数客户首先需要的版本上。

    还要注意旧版本的风险极高 - FX35 缺少 2½ 年的安全补丁,我什至不会让安装它的机器访问我们的网络。

    对于 IE,它更加混乱。目前“活”的有 IE8、IE9、IE10 和 IE11——它们都有自己的怪癖和不兼容性,都不再积极开发,而且几乎都死在了非企业领域(拥有新 PC 的非技术用户必须竭尽全力获得 IE11 而不是 Edge,所以不会)。 IE11 是僵尸——MS 已经停止开发它,只修补安全问题(直到 2025 年),但它仍然在消耗各地 Web 开发人员的大脑上蹒跚而行。

    一段时间以来,我认为 IE 的最佳策略是完全支持 IE11,并在非常有限的测试中为 IE8、9 和 10 提供缩减/缺失功能。如果您在 IE8 中发现错误,请关闭该功能并建议升级 - 无论如何,IE8 用户并不期望流畅的动画和丰富的 UI。

    这真的归结为一个商业案例:支持大量旧版本会花钱,它会赚多少钱? 定义支持这些旧版本的预算,然后决定适合的测试和支持策略。

    【讨论】:

      【解决方案2】:

      我会选择所有浏览器的最新版本,但有一些例外:

      • 我有一个客户,他们冻结了所有 PC 的 google chrome 版本。
      • 在另一种情况下,它们是 Firefox 版本,已在 Linux 发行版的稳定版本中得到修复。这些案件是单独处理的。
      • 我将为网站的所有用户打开的浏览器兼容性问题提供问题日志,以便可以在社区和您的测试和开发部门内讨论问题,如果这对处理特定版本非常重要特定浏览器。
      • 这样的平台你还可以交流,你测试了哪些版本,你的最新版本。并捍卫你的“最新版本战略”。

      【讨论】:

      • 如果浏览器支持自动更新(即 Chrome 和 Firefox),您是说浏览器兼容性应该支持最新版本的浏览器。 Safari 和 IE/Edge 怎么样?附带说明一下,移动浏览器可能支持 4-5 版本,因为移动设备往往会在每年到 4-5 年之间更换。
      • 每个应用程序的使用方式不同,因此重点放在两个策略上:最新版本和专注于反馈显示应用程序真正使用的版本。所有版本都难以处理并且阻塞了大量资源。
      【解决方案3】:

      我将为支持一系列浏览器版本的替代观点添加声音。

      即使使用“自动更新”的浏览器,事实也是有一个采用时间。当然,您可以说大多数浏览器会在 N 天内切换到新版本,但在那之后会有一个尾巴。从专业角度来看,这条尾巴很长。在所有用户关闭特定浏览器之前,这是一段不平凡的时间。

      对于使用服务的用户而言,存在一个漏斗。有多少人最终访问了您的网站 -> 有多少人可以使用您的网站(由于旧浏览器)-> 有多少用户点击了注册按钮 -> .... -> 有多少人使用了您的网站用户购买您的产品(或其他)。

      在任何时候移除 5% 的漏斗都是有代价的。不仅在进行测试时,而且在决定支持哪些浏览器技术时都应该考虑这一成本。

      TL;DR:从支持尽可能多的客户的角度来看。只有当您在其他地方获得的收益超过缩小渠道的成本时,才能缩小渠道。

      例如,我们认为删除

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-25
      • 2010-11-17
      • 2012-06-07
      • 2014-09-12
      • 1970-01-01
      • 1970-01-01
      • 2021-08-04
      相关资源
      最近更新 更多