對提案的 <permission> 元素進行強化

發布日期:2025 年 5 月 12 日

建議的 HTML <permission> 元素仍在來源試用階段,Chrome 團隊會根據初始來源試用奠定的基礎,進一步改良這個元素。這篇文章將介紹相關強化功能,讓您在網頁應用程式中要求權限時,享有更大的彈性和控制權。如要全面瞭解 <permission> 元素的簡介和初始功能,請參閱先前的文章「新 HTML <permission> 元素的原始碼試用」。

備用使用者體驗的內容支援

在 Chrome 136 之前,<permission> 元素最初定義為沒有內容的空元素。從 Chrome 137 開始,這項功能支援內容,因此必須使用開頭和結尾標記標示內容:

<permission>
  <!-- optional content -->
</permission>

這項變更可讓您在元素的內容中加入備用使用者介面。如果瀏覽器不支援 <permission> 元素,或是指定了不支援的 type 屬性,就會顯示這些備用內容。這樣可確保在不同瀏覽器環境中,使用者體驗能更順暢地降級,並獲得改善。

<!-- Invalid `type` attribute value -->
<permission type="not-supported">
  <p>Your browser does not support the specified <code>type</code>.</p>
</permission>

更詳細的程式輔助特徵偵測

為協助您判斷是否支援特定權限類型,我們推出了靜態方法 isTypeSupported()

HTMLPermissionElement.isTypeSupported('geolocation');

這個方法會傳回布林值,指出是否支援指定的權限類型。結合現有的功能偵測 typeof HTMLPermissionElement !== 'undefined',您現在可以透過程式輔助,確保支援 <permission> 元素和特定權限類型。

請注意,您也可以傳遞多個以空格分隔的權限類型 (例如 "camera microphone"),系統會傳回整個字串是否為有效的 "type" 值。舉例來說,使用下列參數呼叫 isTypeSupported() 會傳回這些結果:

  • "camera"true
  • "geolocation"true
  • "camera geolocation"false (即使系統個別支援這些類型,也不支援組合類型)。

更新的活動名稱

在 Chrome 136 中,我們推出了兩個新事件,取代先前的事件:

  • onpromptdismiss (取代 ondismiss)
  • onpromptaction (取代 onresolve)

這些新事件提供更清楚的語意,且更符合元素的行為。舊版事件將在 Chrome 138 中淘汰,因此建議您據此更新事件處理常式。

圖示支援

我們正努力在 Chrome 138 中,為 <permission> 元素啟用圖示支援功能。這項功能可讓您顯示與權限類型相應的預先定義圖示,並提供有限的樣式選項,例如調整顏色和大小。確切的 API 詳細資料仍在最後定案中。

下列範例顯示預設值、不同填滿顏色,以及沒有填滿顏色但有黑色外框的情況。

預設樣式設定

圖示的預設算繪方式。

圖示的預設顏色與權限元素文字顏色相同。

修改樣式

以下範例顯示預設樣式的修改範例。

變更圖示顏色

::permission-icon {
  fill: black;
}

以實心黑色圖示顯示修改後的算繪結果。

圖示外框變更

::permission-icon {
  fill: white;
  stroke: black;
  stroke-width: 20px;
}

以黑色外框圖示顯示修改後的算繪結果。

停用圖示

啟動後,圖示會預設為啟用。如要停用圖示,可以使用下列 CSS 程式碼

::permission-icon {
  display: none;
}

樣式規範

如需有關 <permission> 元素樣式的完整指南,包括最佳做法和限制,請參閱<permission> 樣式指南。這項資源提供詳細說明,協助您在應用程式中有效設定元素樣式。

支援更多平台和功能

<permission> 元素現在支援更多平台和功能:

  • Android 支援:這個元素現在可在 Android 裝置上運作,適用於各種使用者平台。
  • 地理位置支援:您現在可以使用 <permission> 元素和額外的 preciselocation 布林屬性,要求 type="geolocation" 權限。preciselocation 屬性只會影響提示的措辭,但我們正積極努力,在日後的更新中區分粗略和精確位置資訊權限。

結論

我們一直致力於簡化權限要求,並提升網頁使用者體驗,因此對 <permission> 元素進行這些強化。歡迎試用這些新功能,並提供意見回饋,協助我們改善這項功能。