微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

辅助功能和 Javascript:加载动态内容还是显示和隐藏?

如何解决辅助功能和 Javascript:加载动态内容还是显示和隐藏?

我对前端代码中的辅助功能标准比较陌生。

我的问题:

例如:
我有一个带有一些按钮/选项卡的导航栏,可以加载适当的内容。我可以加载所有内容然后显示/隐藏是,类似于下面:

 <nav>
  <div class="tabs" role="tablist">
    <button
      id="tab-1"
      role="tab"
      aria-controls="tab-content-1"
      aria-selected="true"
      <!-- onClick={show/hide associated content} -->
    >
      Tab-1
    </button>
    <button
      id="tab-2"
      role="tab"
      aria-controls="tab-content-2"
      aria-selected="false"
      <!-- onClick={show/hide associated content} -->
    >
      Tab-2
    </button>
  </nav>

  <div>
    <!-- Content for Tab/Button #1,preloaded and hidden/shown from button click -->
    <section
      id="tab-content-1"
      role="tab-content"
      aria-labelledby="tab-1"
      hidden
      >
      Tab Content-1
    </section>
    <!-- Content for Tab/Button #2,preloaded and hidden/shown from button click -->
    <section
      id="tab-content-2"
      role="tab-content"
      aria-labelledby="tab-2"
      hidden
    >
      Tab Content-2
    </section>
</div>

或者我可以通过标签/按钮点击动态加载内容

<nav>
  <div class="tabs" role="tablist">
    <button
      id="tab-1"
      role="tab"
      aria-controls="tab-content-1"
      aria-selected="true"
     <!-- onClick={load appropriate content and HTML } -->
    >
      Tab-1
    </button>
    <button
      id="tab-2"
      role="tab"
      aria-controls="tab-content-2"
      aria-selected="false"
      <!-- onClick={load appropriate content and HTML } -->
    >
      Tab-2
    </button>
  </nav>

  <div>
    <!-- Dynamically load the associated Tab Content via Javascript Here
    <section
      id="" => dynamically set 'id'
      role="" => dynamically set 'role'
      aria-labelledby="=" => dynamically set 'arria-labelledby'
      >
      // Dynamically set Content
    </section>
    -->
</div>

解决方法

首先,您应该使用 CSS display:none 而不是 aria-hidden 来隐藏内容。属性 aria-hidden 应该只在非常特殊的情况下使用。 我建议搜索何时应该和不应该使用 aria-hidden 以及为什么会这样。许多问题已经很好地涵盖了该主题。

回到您最初的问题,仅就可访问性而言,如果内容只是可见或已加载,则不会有太大变化。

使用 aria-live 区域来告诉内容正在加载,以防加载需要一段时间。 但是,不要将 aria-live 用于更新/新内容本身,尤其是当内容很长和/或包含可聚焦元素时。

决定是否应该显示/隐藏或动态加载主要不是可访问性问题。它更多地取决于初始和后续加载时间,以及您期望的响应水平。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。