Element:ariaNotify() 方法
非標準:此特性未標準化。我們不建議在生產環境中使用非標準特性,因為它們瀏覽器支援有限,並且可能會更改或被移除。但是,在沒有標準選項的特定情況下,它們可以是合適的替代方案。
Element 介面的 ariaNotify() 方法指定一段給定的文字應在螢幕閱讀器可用並激活時進行播報。
語法
ariaNotify(announcement)
ariaNotify(announcement, options)
引數
公告-
指定要播報的文字的字串。
options可選-
一個包含以下屬性的選項物件
返回值
無(undefined)。
描述
ariaNotify() 方法可用於以程式設計方式觸發螢幕閱讀器公告。此方法提供類似於ARIA 即時區域的功能,並具有一些優勢:
- 即時區域只能在 DOM 更改後進行公告,而
ariaNotify()公告可以隨時進行。 - 即時區域公告涉及朗讀已更改 DOM 節點的更新內容,而
ariaNotify()公告內容可以獨立於 DOM 內容定義。
開發人員經常透過使用帶有即時區域的隱藏 DOM 節點來規避即時區域的限制,這些節點的內容會隨著要播報的內容而更新。這效率低下且容易出錯,而 ariaNotify() 提供了一種避免此類問題的方法。
某些螢幕閱讀器會按順序朗讀多個 ariaNotify() 公告,但這不能在所有螢幕閱讀器和平臺上得到保證。通常,只播報最新的公告。將多個公告合併為一個更可靠。
例如,以下呼叫
elemRef.ariaNotify("Hello there.");
elemRef.ariaNotify("The time is now 8 o'clock.");
最好合併為
elemRef.ariaNotify("Hello there. The time is now 8 o'clock.");
ariaNotify() 呼叫可以在 DOM 中的任何元素上觸發,但瀏覽器認為對可訪問性“不感興趣”並在構建可訪問性樹時忽略的元素除外。具體哪些元素被忽略因瀏覽器而異,但列表通常包括幾乎沒有語義值的容器元素,例如<html> 和<body> 元素。
ariaNotify() 公告不需要瞬時啟用;您應該注意不要向螢幕閱讀器使用者傳送過多的通知,因為這可能會造成糟糕的使用者體驗。
公告優先順序
設定了 priority: high 的 ariaNotify() 公告會在設定了 priority: normal 的 ariaNotify() 公告之前播報。
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>,當點選時,它會在自身上觸發螢幕閱讀器公告。
<button>Press</button>
document.querySelector("button").addEventListener("click", () => {
document.querySelector("button").ariaNotify("You ain't seen me, right?");
});
結果
輸出如下:
嘗試啟用螢幕閱讀器,然後按下按鈕。您應該會聽到螢幕閱讀器說“You ain't seen me, right?”。
規範
此特性似乎未在任何規範中定義。瀏覽器相容性
載入中…