发布日期:2025 年 2 月 7 日
2024 年 4 月,此网站上的一篇文章宣布了 Popover API 已成为基准新 API。不过,我们发现了错误,自 2025 年 1 月 27 日起,弹出式窗口将进入基准阶段。本文将说明我们为何出错,以及我们在哪些方面做出了改变,以降低此类错误再次发生的可能性。
什么是 Popover API?
Popover API 提供了一种内置方法,可用于创建 Web 应用中使用的各种类型的弹出式窗口。以前,您需要使用 JavaScript 来实现这些功能,并要非常小心地以无障碍的方式实现这些功能。该 API 可将所有这些内容引入浏览器,并且您可以在 HTML 中以声明方式创建简单的弹出式窗口。
<button popovertarget="my-popover">Open Popover</button>
<div id="my-popover" popover>
<p>I am a popover with more information. Hit <kbd>esc</kbd> or click away to close me.</p>
</div>
为什么 2024 年 4 月不是基准年?
当 Firefox 在 2024 年 4 月发布其对弹出式窗口的实现时,我们尚未发现 iOS 和 iPadOS 上存在重大问题。在这些移动浏览器中,点击弹出式窗口外部不会关闭它,这项功能称为轻触关闭。这个问题会阻止大多数开发者愉快地使用弹出式窗口。这意味着,我们本不应在 4 月份将其纳入基准测试,而需要等到 Safari 18.3 中修复此 bug。
为什么我们的决定有误?
基准依赖于 web-features 工作来计算功能何时纳入或排除在基准范围内。如果您查看该项目中的单个功能文件(例如用于弹出式窗口的文件),则会看到 Mozilla 浏览器兼容性数据中列出的各个功能。一个 Web 地图项通常包含多个此类包含项。这是因为,网络上的功能不仅仅是单个属性或方法,它需要多个组成部分才能正常运行。功能也不是整个规范。例如,CSS 规范通常包含从未实现或仅在特定上下文中使用的子功能。Web 功能工作会结合使用现有可用性数据和人工输入,确定 Web 平台功能的构成要素,以及部分实现是否严重到无法纳入基准范围(这一点至关重要)。
早在 2 月份,Web 地图项的工作就还远远没有完成。因此,为了帮助展示基准规范的运作方式,我们在没有所有必要数据的情况下,尝试找出将纳入基准规范 2024 的关键功能。从理论上讲,或者更确切地说,在浏览器兼容性数据(直到 9 月发现此问题时才更新)中,似乎包含了弹出式窗口。不过,由于 iOS 上的 bug 足够严重,以致无法使用 popover,因此我们尚未推出该功能。
此外,还缺少移动设备测试基础架构。借助 Web 平台测试项目,我们可以测试 Web 平台功能是否在所有浏览器中正常运行。如果此轻触关闭问题发生在桌面浏览器中,我们会看到测试失败,但在移动设备上并非如此。
如何避免日后出现此类问题?
我们已经在数据方面取得了长足进步。Web 地图项数据已基本完成,因此我们可以更放心地声明任何地图项为基准地图项。
具体而言,这个问题的部分原因在于,我们发现了一个仅在 iOS 移动设备上发生的问题。我们将采取一些措施,以便日后更轻松地发现移动设备上的互操作性问题。我们正在不断改进 Web 平台测试中的移动设备测试,因此应该能够更好地识别移动浏览器是否存在问题(与桌面设备分开)。我们还计划在今年在 webstatus.dev 信息中心内公开这些数据。如果日后发生此类问题,我们应该能够更快地发现,希望在将该功能纳入基准版之前就能发现。
我们一直知道,将整个网站平台映射为一组功能并不容易!不过,我们就部分实现、bug 以及构成功能的实际内容进行的讨论非常有价值。这有助于我们确定对您而言真正重要的是什么,从而为我们规划 Interop 2025 等活动提供更好的信号。