应该处理浏览器之间的兼容性问题



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

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等关键字的问题类似。

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

一方面,排除这个版本是有意义的,因为这是浏览器的"错误操作"。图书馆的作者不能在浏览器产生的任何和所有问题上承受打击。尤其是现在,浏览器的新版本比过去更频繁了。有些错误是注定要发生的。

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

另一点是,当浏览器兼容性表更新时,它将"转移"到有问题的版本。

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

我认为,我们要么咬紧牙关,继续支持"所有最新版本",要么在兼容性表上留下一些漏洞,只支持"黄金"版本。

你推荐什么?

顺便说一句,我并不反对Firefox,只是把它当作一个例子。

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

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

对IE来说,它要混乱得多。目前"活跃"的有IE8、IE9、IE10和IE11,它们都有自己的怪癖和不兼容性,都不再积极开发,而且几乎都死在了非企业领域(拥有新电脑的非技术用户必须想尽办法获得IE11,而不是Edge,所以不会)。IE11是一个僵尸——微软已经停止开发它,只修补安全问题(直到2025年),但它仍然在消耗各地网络开发人员的大脑。

一段时间以来,我认为IE中最好的策略是完全支持IE11,并在非常有限的测试中为IE8、9和10提供精简/缺失功能。如果你在IE8中发现一个bug,请关闭该功能并建议升级——IE8用户无论如何都不希望看到流畅的动画和丰富的UI。

这实际上可以归结为一个商业案例:支持许多旧版本会花费你的钱,它能赚多少钱定义用于支持这些旧版本的预算,然后决定适合的测试和支持策略

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

  • 我有一个客户,他冻结了他们所有电脑的谷歌chrome版本
  • 在另一种情况下,它们是在linux发行版的稳定版本中修复的firefox版本。这些案子是单独处理的
  • 我会为网站的所有用户提供浏览器兼容性问题的问题日志,以便在社区和您的测试和开发部门内讨论问题,如果这对于处理特定浏览器的特定版本足够重要的话
  • 你还可以在哪个这样的平台上交流,你测试了哪个版本,你的最新版本。并为您的"最新版本策略"辩护

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

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

当涉及到使用服务的用户时,有一个漏斗。有多少%的用户最终访问了您的网站->有多少%可以使用您的网站(由于旧浏览器)->有多少百分比的用户点击了注册按钮->……->这些用户中有多少%购买了你的产品(或其他什么)。

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

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

例如,我们决定从<IE10,这样我们就可以将我们的网站转移到flexbox。这值得使用该网站的n%的客户,因为我们的开发团队可以制作出一款更可持续的产品,让我们所有的其他用户都从中受益。

最新更新