1 回答

TA貢獻1801條經驗 獲得超16個贊
無法告訴您如何在 React 中執行此操作,但這是一個簡單的過程,因此我相信您不會遇到困難。解決問題的關鍵部分是“導航后”標題,但是如果可以的話請嘗試實現所有內容,因為它將極大地改善屏幕閱讀器的用戶體驗。
SPA 模式導航最佳實踐
在 SPA 中處理導航的推薦方法實際上非常簡單,只需兩個步驟。
告訴用戶導航即將發生(在導航之前)
讓用戶知道加載已完成(導航后)。
導航之前(點擊鏈接)
如果您使用 SPA 模式(因此會中斷正常導航),您需要向用戶發出信號,表明頁面正在加載。例如,我單擊您的鏈接,您需要讓我知道當您使用或等效方式攔截正常瀏覽器行為時正在執行某個操作(正在加載......)e.preventDefault()
。
aria-live=assertive
最簡單的方法是在解釋頁面正在加載的區域上使用。您可以谷歌如何正確實現這一點,但本質上您會在<div aria-live="assertive" class="visually-hidden">loading</div>
單擊鏈接時使用一些加載消息更新隱藏 div ( ) 的內容。
這應該在進行任何 AJAX 調用之前完成。
導航后(加載新內容)
當新頁面加載時,您需要管理焦點。
做到這一點的最佳方法是<h1>
為每個包含tabindex="-1"
.?使用tabindex="-1"
它意味著標題不會被 JavaScript 以外的任何東西聚焦,因此不會干擾正常的文檔流。
頁面加載并且內容已完全填充后,您在 JavaScript 導航功能中執行的最后一個操作是將焦點置于此標題上。
這樣做有兩個好處:
它讓用戶知道他們現在在哪里
它還讓他們知道頁面加載何時完成(因為 AJAX 導航不會在大多數屏幕閱讀器中宣布頁面加載時間)。
此時,您可能還想清除<div aria-live="assertive">
內容,以便為進一步導航做好準備。
添加回答
舉報