2 回答

TA貢獻1810條經(jīng)驗 獲得超5個贊
我發(fā)現(xiàn)當對話框打開時,焦點并不像ARIA 模式示例描述的那樣完全“陷入”。
這是因為 W3 指南上的示例確實有自定義 javascript來捕獲對話框上的使用焦點。您可以看到評論中也提到了同樣的內(nèi)容:
...
// Bracket the dialog node with two invisible, focusable nodes.
// While this dialog is open, we use these to make sure that focus never
// leaves the document even if dialogNode is the first or last node.
var preDiv = document.createElement('div');
this.preNode = this.dialogNode.parentNode.insertBefore(preDiv, this.dialogNode);
this.preNode.tabIndex = 0;
var postDiv = document.createElement('div');
this.postNode = this.dialogNode.parentNode.insertBefore(postDiv, this.dialogNode.nextSibling);
this.postNode.tabIndex = 0;
...
這里發(fā)生了什么。MDN 的示例不完整嗎?
我不會說它不完整,但是兩個指南都針對不同的受眾,您提到的 w3 文檔是可訪問性指南,而 MDN 文檔只是dialog
HTML 規(guī)范中描述的文檔。
為了在生產(chǎn)中使用該元素,Web 開發(fā)人員是否需要編寫額外的 JS 代碼來真正聚焦陷阱?或者從可訪問性的角度來看,允許模式部分捕獲焦點(如示例中所示)是否“可接受”,其中選項卡上的按鍵可以暫時轉義到瀏覽器 UI 元素。
我想這取決于您和您的產(chǎn)品用戶。大多數(shù)情況下,從可訪問性的角度來看,建議將用戶焦點捕獲在對話框內(nèi),并允許通過轉義鍵、關閉按鈕和取消按鈕來關閉對話框。
是的,您必須添加用于鼠標捕獲的自定義代碼,無論是在 JavaScript 中還是在 HTML 中,方法是添加 2 個可聚焦元素,如您提到的輔助功能指南頁面的示例中所示。

TA貢獻1820條經(jīng)驗 獲得超3個贊
我只是在 div 標簽中添加了對話框,它起作用了。
示例代碼:
<div>
<Transition.Root show={true} as={Fragment}>
<Dialog as="div">
<Transition.Child></Transition.Child>
</Dialog as="div">
</Transition.Root show={true} as={Fragment}>
</div>
添加回答
舉報