Popover API 現已正式推出

發布日期:2025 年 2 月 7 日

2024 年 4 月,本網站上的一篇文章宣布 Popover API 已成為新基準。不過,我們做錯了,彈出式視窗會在 2025 年 1 月 27 日進入基準。本文將說明我們為何誤判,以及我們為減少這類錯誤而做出的變更。

什麼是 Popover API?

Popover API 提供內建方式,可用於建立在網路應用程式中使用的各種 popover。先前,您必須使用 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>
使用 popover 屬性的基本範例。

為什麼 2024 年 4 月沒有達到基準?

當 Firefox 在 2024 年 4 月推出彈出式視窗時,我們尚未發現 iOS 和 iPadOS 上有重大問題。在這些行動瀏覽器中,點選彈出式視窗外部不會關閉彈出式視窗,這項功能稱為「輕型關閉」。這個問題會導致大多數開發人員不願使用彈出式視窗。也就是說,這項測試不應在 4 月納入基準,必須等到 Safari 18.3 修復此錯誤後才能納入。

為什麼判斷有誤?

基準功能會依據 web-features 工作計算功能何時進入或離開基準。如果您查看該專案中的個別功能檔案 (例如彈出式視窗的檔案),就會看到 Mozilla 瀏覽器相容性資料中的個別功能。一個網頁功能通常包含多個這類項目。這是因為網頁上的功能不只是單一屬性或方法,而是需要多個元件才能運作。功能也不是完整規格。舉例來說,CSS 規格通常包含從未實作的子功能,或是只在特定情境下使用的功能。網頁功能的工作會結合現有可用性資料和人為輸入內容,找出構成網頁平台功能的要素,並判斷部分實作是否嚴重到足以將其排除在基準之外。

在 2 月時,網頁功能的開發工作還很不成熟。因此,為了說明基準值的運作方式,我們嘗試找出將納入基準值 2024 的關鍵功能,但沒有所有必要資料。在紙上,或更準確地說,在瀏覽器相容性資料中 (直到 9 月才更新,也就是發現問題時),彈出式視窗似乎已納入。不過,由於 iOS 上的錯誤嚴重到無法使用彈出式視窗,因此我們尚未準備好推出這項功能。

也缺乏行動裝置的測試基礎架構。Web Platform Tests 專案可讓我們測試網路平台功能是否可在所有瀏覽器上運作。如果這個輕型關閉問題發生在電腦版瀏覽器中,我們會看到測試失敗,但行動裝置並未發生這種情況。

我們日後如何避免這種情況?

我們已經改善資料的品質。網頁功能資料幾乎完整,因此我們可以更有信心地宣告任何功能為基準。

特別是這個問題,部分問題是識別僅發生在 iOS 行動裝置上的錯誤。我們將採取一些措施,以便在日後更輕鬆地找出行動裝置上的互通性問題。我們正在努力改善 Web 平台測試中的行動裝置測試,因此應該可以更準確地指出行動瀏覽器的問題,而不受電腦版影響。我們也打算在今年在 webstatus.dev 資訊主頁上公開這項資料。如果日後發生類似問題,我們應該會更快收到相關通知,希望能在將這項功能納入基準值之前收到通知。

我們一直都知道,將整個網站平台對應為一組功能並不容易!不過,我們討論的部分實作項目、錯誤,以及實際構成功能的內容,都非常有價值。這有助於我們瞭解您真正在意的重點,並在規劃 Interop 2025 等計畫時,提供更精確的信號。