作为一名前端程序员,我经常会浏览caniuse网站,查看某个功能的支持程度。最近发现will-change在caniuse报告的浏览器支持率和在safari on iOS 15-的实际表现并不一致,这让我重新审视caniuse是如何判断一个功能支持与否的?
will-change在caniuse上显示从safari on iOS 9.3+都支持。我习惯性地认为这种支持是完备的,也就是所有will-change相关的功能点都被验证是支持的。实际上并不是,比如说will-change会创建一个特殊的containing block。但在safari iOS 15-上will-change并不会创建一个containing block。
这让我思考caniuse是如何判断一个功能的支持情况的。读了caniuse的关于页面,关于如何认定一个功能支持处写到:
When its primary purpose is largely fulfilled. It does not mean it's 100% supported, just that it's usable in most cases.在测试用例页面的关于处写到:
It is used to quickly test basic support for features in upcoming browsers, rather than any full support of the feature's specification.
总结一下,caniuse的测试并不是完全的、百分百的,它只是表明一个功能的基本支持情况。对于复杂的功能依旧需要小心地在目标浏览器上测试。