Element:ariaNotify() 方法

可用性有限

此特性不是基線特性,因為它在一些最廣泛使用的瀏覽器中不起作用。

實驗性: 這是一項實驗性技術
在生產中使用此技術之前,請仔細檢查瀏覽器相容性表格

非標準:此特性未標準化。我們不建議在生產環境中使用非標準特性,因為它們瀏覽器支援有限,並且可能會更改或被移除。但是,在沒有標準選項的特定情況下,它們可以是合適的替代方案。

Element 介面的 ariaNotify() 方法指定一段給定的文字應在螢幕閱讀器可用並激活時進行播報。

語法

js
ariaNotify(announcement)
ariaNotify(announcement, options)

引數

公告

指定要播報的文字的字串。

options 可選

一個包含以下屬性的選項物件

優先順序

一個列舉值,指定公告的優先順序。可能的值是

normal

公告具有正常優先順序。它將在螢幕閱讀器當前正在進行的任何公告之後播報。

high

公告具有高優先順序。它將立即播報,中斷螢幕閱讀器當前正在進行的任何公告。

返回值

無(undefined)。

描述

ariaNotify() 方法可用於以程式設計方式觸發螢幕閱讀器公告。此方法提供類似於ARIA 即時區域的功能,並具有一些優勢:

  • 即時區域只能在 DOM 更改後進行公告,而 ariaNotify() 公告可以隨時進行。
  • 即時區域公告涉及朗讀已更改 DOM 節點的更新內容,而 ariaNotify() 公告內容可以獨立於 DOM 內容定義。

開發人員經常透過使用帶有即時區域的隱藏 DOM 節點來規避即時區域的限制,這些節點的內容會隨著要播報的內容而更新。這效率低下且容易出錯,而 ariaNotify() 提供了一種避免此類問題的方法。

某些螢幕閱讀器會按順序朗讀多個 ariaNotify() 公告,但這不能在所有螢幕閱讀器和平臺上得到保證。通常,只播報最新的公告。將多個公告合併為一個更可靠。

例如,以下呼叫

js
elemRef.ariaNotify("Hello there.");
elemRef.ariaNotify("The time is now 8 o'clock.");

最好合併為

js
elemRef.ariaNotify("Hello there. The time is now 8 o'clock.");

ariaNotify() 呼叫可以在 DOM 中的任何元素上觸發,但瀏覽器認為對可訪問性“不感興趣”並在構建可訪問性樹時忽略的元素除外。具體哪些元素被忽略因瀏覽器而異,但列表通常包括幾乎沒有語義值的容器元素,例如<html><body> 元素。

ariaNotify() 公告不需要瞬時啟用;您應該注意不要向螢幕閱讀器使用者傳送過多的通知,因為這可能會造成糟糕的使用者體驗。

公告優先順序

設定了 priority: highariaNotify() 公告會在設定了 priority: normalariaNotify() 公告之前播報。

ariaNotify() 公告大致等同於 ARIA 即時區域公告,如下所示:

  • ariaNotify() priority: high: aria-live="assertive"
  • ariaNotify() priority: normal: aria-live="polite"

但是,aria-live 公告將優先於 ariaNotify() 公告。

語言選擇

螢幕閱讀器根據元素lang 屬性中指定的語言,或者,如果元素沒有指定 lang 屬性,則根據其最近祖先上設定的 lang 屬性,選擇適當的語音(就口音、發音等而言)來朗讀 ariaNotify() 公告。如果在 HTML 中沒有指定 lang 屬性,則使用使用者代理的預設語言。

許可權策略整合

文件或<iframe>ariaNotify() 的使用可以透過aria-notify 許可權策略來控制。

具體來說,如果定義的策略阻止了使用,則任何使用 ariaNotify() 建立的公告都將靜默失敗(它們將不會被髮送)。

示例

有關更詳細的示例,請參閱 Document.ariaNotify() 頁面上的可訪問購物清單示例。如果您在元素引用而不是 Document 物件上呼叫 ariaNotify(),該示例也將同樣有效。

基本的 ariaNotify() 用法

此示例包括一個<button>,當點選時,它會在自身上觸發螢幕閱讀器公告。

html
<button>Press</button>
js
document.querySelector("button").addEventListener("click", () => {
  document.querySelector("button").ariaNotify("You ain't seen me, right?");
});

結果

輸出如下:

嘗試啟用螢幕閱讀器,然後按下按鈕。您應該會聽到螢幕閱讀器說“You ain't seen me, right?”。

規範

此特性似乎未在任何規範中定義。

瀏覽器相容性

另見