0

我在我的.NET頁面上使用AjaxToolkit模式彈出窗口並嘗試添加適當的ARIA標籤,以便屏幕閱讀器可以讀取彈出窗口。屏幕閱讀器不讀取AjaxToolkit模式彈出

這裏是我的.aspx代碼:

<ajaxToolKit:ModalPopupExtender ID="mpeDetails" runat="server" TargetControlID="btnHiddenDetails" PopupControlID="pnlDetails" CancelControlID="cmdCloseDetails" BackgroundCssClass="modalBackground" PopupDragHandleControlID="DetailsCaption" Drag="true"> 
</ajaxToolKit:ModalPopupExtender> 

<asp:Panel ID="pnlDetails" runat="server" role="dialog" aria-labelledby="lblPopupHeader" tabindex="-1" CssClass="modalBox" Style="display: none;" Width="800px" Height="180px"> 
    <asp:Panel ID="DetailsCaption" runat="server"> 
    <asp:Label ID="lblPopupHeader" runat="server" Text="Label" CssClass="sm-hdr"></asp:Label> 
    </asp:Panel> 
</asp:Panel> 

我已經添加了一個ARIA地標role="dialog"是這樣的模式彈出和aria-labelledby在面板上。我還添加了tabindex="-1"以將焦點設置爲模式彈出窗口。

我使用NVDA作爲屏幕閱讀器。當模式彈出窗口顯示時,屏幕閱讀器將繼續讀取彈出窗口下面的內容(鏈接將激活彈出窗口)。

有沒有可能會丟失的步驟?這是AjaxToolkit模式對話框的已知問題嗎?

回答

1

當模式彈出時,您必須將焦點設置到模式對話框中。瀏覽器/屏幕閱讀器不會自動爲您執行此操作。然後,當模式對話框關閉時,您必須將焦點設置回激活對話框的元素(或其他邏輯位置,如果相關,取決於對話框的用途)。

你可以在WAI-ARIA創作指南http://www.w3.org/TR/wai-aria-practices/#modal_dialog中閱讀。具體而言,第三段爲

When the dialog box is opened, focus should be set to the first tab 
focusable element within the dialog. 

該部分的其餘部分描述了您必須詳細實施的重點管理。