在前端开发中,无障碍体验是需要重视的一个方面。其中,屏幕阅读器是许多视障人群非常依赖的一种工具。为了让屏幕阅读器读取内容更加方便,我们需要使用 ARIA 规范中的 aria-live
属性标记一些内容。但是,如果我们将所有内容都标记为 aria-live
,那么屏幕阅读器将会持续不断地读取整个页面,这会极大地影响无障碍体验。因此,我们可以使用一个名为 on-demand-live-region
的 npm 包来解决这个问题。
什么是 on-demand-live-region
on-demand-live-region
是一个 npm 包,它可以根据需要才将某些内容标记为 aria-live
,从而避免了一次性将整个页面标记为 aria-live
所带来的问题。这个包不依赖于任何其他库,可以与任何前端框架一起使用。
安装
你可以使用 npm 进行安装:
npm install on-demand-live-region
或者使用 yarn 进行安装:
yarn add on-demand-live-region
用法
on-demand-live-region
提供了两个主要的函数,enableLiveRegions
和 disableLiveRegions
。它们分别用于开启和关闭 on-demand-live-region 功能。当开启 on-demand-live-region 功能后,你需要将要标记为 aria-live
的元素包裹在一个包含 data-live-region
属性的容器中。这个属性的值可以是 "polite"
或 "assertive"
,表示这个容器应该以什么样的方式被屏幕阅读器读取。例如:
<div data-live-region="polite"> <p>这是要被标记为 aria-live 的内容。</p> </div>
当需要开启 on-demand-live-region 功能时,你可以调用 enableLiveRegions
函数并传入 document
对象作为参数。例如:
import { enableLiveRegions } from 'on-demand-live-region'; enableLiveRegions(document);
当需要关闭 on-demand-live-region 功能时,你可以调用 disableLiveRegions
函数。例如:
import { disableLiveRegions } from 'on-demand-live-region'; disableLiveRegions();
示例代码
以下是一个简单的示例,演示如何使用 on-demand-live-region
:
-- -------------------- ---- ------- --------- ----- ----- ---------- ------ ----- ---------------- ---------------------------- ---------- ------- ------ ---- -------------------------- ------- ------------------------------------ ------ ------- -------------------------------------------------------------------------------- -------- -------- ------------ - ----- ------- - ---------------------------- ------------------- - ------------ ------------------------------------------------------------------ - ----- ----------------- - ----- -- ------------------- - ------------------------------------------------------------- - --------- ------- -------
这个示例中,有一个按钮,点击这个按钮将在 div
元素中添加新的内容。这个 div
元素被标记为 data-live-region="polite"
,表示它包含了一个将要被标记为 aria-live
的容器。在页面加载完成后,我们调用了 enableLiveRegions
函数并传入 document
对象,从而开启了 on-demand-live-region 功能。当我们点击按钮并向 div
元素中添加内容时,屏幕阅读器会自动将这些内容标记为 aria-live
并读取出来。
指导意义
使用 aria-live
标记内容是一个重要的无障碍体验实践。然而,一次性将整个页面标记为 aria-live
可能会造成无障碍体验上的困扰。我们可以使用 on-demand-live-region
包来解决这个问题。通过仅在需要时才将特定的容器标记为 aria-live
,我们可以确保只有必要的内容被屏幕阅读器读取。这有助于提高页面的可用性和可访问性。
同时,需要注意的是,在使用 on-demand-live-region
时,我们需要确保页面中已经加载了屏幕阅读器(例如,我们可以使用 CI 工具测试 无障碍), 否则可能会对有障碍人士造成不必要的困扰。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60055ff481e8991b448ddc1f