第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

<dialog> 上的焦點陷阱不是絕對的,焦點轉義到瀏覽器 UI 元素

<dialog> 上的焦點陷阱不是絕對的,焦點轉義到瀏覽器 UI 元素

縹緲止盈 2023-07-06 10:11:00
當我從中運行代碼時......var updateButton = document.getElementById('updateDetails');var favDialog = document.getElementById('favDialog');var outputBox = document.querySelector('output');var selectEl = document.querySelector('select');var confirmBtn = document.getElementById('confirmBtn');// "Update details" button opens the <dialog> modallyupdateButton.addEventListener('click', function onOpen() {? if (typeof favDialog.showModal === "function") {? ? favDialog.showModal();? } else {? ? alert("The <dialog> API is not supported by this browser");? }});// "Favorite animal" input sets the value of the submit buttonselectEl.addEventListener('change', function onSelect(e) {? confirmBtn.value = selectEl.value;});// "Confirm" button of form triggers "close" on dialog because of [method="dialog"]favDialog.addEventListener('close', function onClose() {? outputBox.value = favDialog.returnValue + " button clicked - " + (new Date()).toString();});<!-- Simple pop-up dialog box containing a form --><dialog id="favDialog">? <form method="dialog">? ? <p><label>Favorite animal:? ? ? <select>? ? ? ? <option></option>? ? ? ? <option>Brine shrimp</option>? ? ? ? <option>Red panda</option>? ? ? ? <option>Spider monkey</option>? ? ? </select>? ? </label></p>? ? <menu>? ? ? <button value="cancel">Cancel</button>? ? ? <button id="confirmBtn" value="default">Confirm</button>? ? </menu>? </form></dialog><menu>? <button id="updateDetails">Update details</button></menu><output aria-live="polite"></output>...我發(fā)現(xiàn)當對話框打開時,焦點并不像ARIA 模式示例描述的那樣完全&ldquo;陷入&rdquo;。他們說當用戶按下 Tab 鍵時:當焦點位于對話框中最后一個可聚焦元素上時,將焦點移動到對話框中第一個可聚焦元素。然而,對話框元素的 MDN 示例允許用戶&ldquo;跳出&rdquo;模式并進入瀏覽器框架。就我而言,使用 Chrome,在確認按鈕按下選項卡后,將聚焦于&ldquo;查看站點信息&rdquo;按鈕,然后聚焦于文檔區(qū)域之外的地址欄。這里發(fā)生了什么。MDN 的示例不完整嗎?為了<dialog>在生產(chǎn)中使用該元素,Web 開發(fā)人員是否需要編寫額外的 JS 代碼來真正聚焦陷阱?或者從可訪問性的角度來看,允許模式部分捕獲焦點(如示例中所示)是否&ldquo;可接受&rdquo;,其中選項卡上的按鍵可以暫時轉義到瀏覽器 UI 元素。
查看完整描述

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 文檔只是dialogHTML 規(guī)范中描述的文檔。

為了在生產(chǎn)中使用該元素,Web 開發(fā)人員是否需要編寫額外的 JS 代碼來真正聚焦陷阱?或者從可訪問性的角度來看,允許模式部分捕獲焦點(如示例中所示)是否“可接受”,其中選項卡上的按鍵可以暫時轉義到瀏覽器 UI 元素。

我想這取決于您和您的產(chǎn)品用戶。大多數(shù)情況下,從可訪問性的角度來看,建議將用戶焦點捕獲在對話框內(nèi),并允許通過轉義鍵、關閉按鈕和取消按鈕來關閉對話框。

是的,您必須添加用于鼠標捕獲的自定義代碼,無論是在 JavaScript 中還是在 HTML 中,方法是添加 2 個可聚焦元素,如您提到的輔助功能指南頁面的示例中所示。


查看完整回答
反對 回復 2023-07-06
?
DIEA

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>


查看完整回答
反對 回復 2023-07-06
  • 2 回答
  • 0 關注
  • 169 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號