这是关闭按钮的代码,它是模式弹出窗口的一部分.

<h2 class="sc-ejdXBC byjYiM MuiTypography-root MuiTypography-h6 sc-EoWXQ kOYWJk MuiDialogTitle-root" id="popupTitle">
  Default Pop-UP Title
  <button class="sc-dmqHEX dYAxeG MuiButtonBase-root sc-hLseeU gQXJSS MuiIconButton-root       MuiIconButton-colorInherit MuiIconButton-sizeLarge sc-dlfzSu bdNite" tabindex="0" type="button" aria-label="Close" id="mui-4">
    <div size="1" class="sc-fmSAUk jdsjjC">
      <svg class="sc-hAtEyd bHRrTR MuiSvgIcon-root MuiSvgIcon-fontSizeMedium" focusable="false" aria-hidden="true" viewBox="0 0 24 24" data-testid="CloseIcon">
        <path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"></path>
      </svg>
    </div>
    <span class="sc-beqWaB cEtDyT MuiTouchRipple-root"></span>
  </button>
</h2>

NVDA是这样解读的:

DEFAULT POP-UP TITLE Close  dialog
DEFAULT POP-UP TITLE Close  heading
Close  button    heading    level 2
DEFAULT POP-UP TITLE Close  dialog
heading    level 2  button    Close

它应该是关闭按钮"标题2级按钮关闭"我try 给出了一些设置在NVDA,但它不起作用.

推荐答案

按钮本身看起来不错.您在按钮中嵌入了一个<;svg>;(大概是一个"X"形状),而按钮没有任何文本,所以您使用的是aria-label.这一切都很好,尽管你的按钮上有多余的tabindex="0".

问题是你的按钮嵌入在标题h2>;中.这是故意的吗?您的实际代码是否做到了这一点,或者这是一个打字错误?

<h2>Default Pop-UP Title
  <button>close</button>
</h2>

您需要关闭<;/h2>;,然后使用按钮.

<h2>Default Pop-UP Title</h2>
<button>close</button>

Update 使用 comments 中的链接,https://codesandbox.io/s/somr32?file=/demo.tsx

根据你是否使用NVDA或JAWS,以及你使用的是Chrome还是Firefox,你会得到各种行为.你真的不能说哪个版本是正确的,因为它们都有优点.精简后的对话框 struct 为:

<div role="presentation" tabindex="-1">
  <div role="dialog" aria-labelledby="heading">
    <h2 id="heading">modal title
      <button aria-label="close"></button>
    </h2>
  </div>
</div>

当对话框打开时,我在代码判断器中查看了document.activeElement,焦点在最外面的<;div>;

<div role="presentation" tabindex="-1">

可能是通过Focus()调用移到那里的,因为<;div>;的值是tabindex="-1".

当对话框打开时,我听到:

  • NVDA+Chrome-(nothing)
  • NVDA+Firefox-"clickable Modal title close dialog"
    • 该对话框使用咏叹调标记,通过指向H2
  • JAWS+Chrome-"Modal title close heading level 2"
    • 正在宣布H2
  • JAWS+Firefox-(nothing)

然后,当您制表符时,焦点移动到X-Close按钮,并宣布以下消息:

  • NVDA+Chrome
      • "模型标题关闭对话框"
      • "模型标题关闭标题"
      • "关闭按钮标题2"
      • "模型标题关闭对话框"
      • "标题2级按钮关闭"
    • NVDA+Firefox
      • "模式标题关闭对话框"
      • "通道标题关闭标题"
      • "关闭按钮标题级别2"
      • "模式标题关闭对话框"
      • "标题2级按钮关闭"
    • JAWS+Chrome
      • "通道标题关闭对话框"
      • "关闭标题2级按钮"
    • JAWS+Firefox
      • "模式标题关闭对话框"
      • 他说:"我的名字是一种发酵剂,它是一种发酵剂.它只是一种仇恨,是一种设施的感染,是一种危险的行为.它是一种危险的行为,它是一种危险的行为,它是一种行为,它是一种行为."
      • "关闭按钮"

    如你所见,它到处都是.如果将初始焦点强制放在对话框本身而不是对话框上方的容器上,您可能会获得更多的一致性.

Html相关问答推荐

卸载伪元素 destruct 了CSS

Xpath:提取标签之间的文本,但一旦出现嵌入标签就停止

我已经在我的网站上创建了按钮,但我不能让它们正确排列.'

为什么在CSS中字段是一个有效的 colored颜色 名称?

轨道上的居中范围滑块拇指(Webkit)

在每个列宽由带有固定值的minmax()函数定义的网格中,CSS如何为列分配空间?

将导航项目底部边框与导航栏对齐

如何用css在右侧创建多个半圆

如何使用*ngFor将模板从父级传递到子级

如何使用css在响应图像后面添加形状?

顶部有文字的图像的悬停效果

如何在黑暗模式切换中添加图标

Tailwind:父母动态适应子元素的身高

如何让一个 div 始终贴在容器的边缘?

将背景图像裁剪成两半

删除按钮组件时 bootstrap col-auto 布局高度对齐中断

Primeng浮动标签溢出管理

按部分划分的表行带

SVG 适用于 Safari,不适用于 Chrome

是否可以在换行时向锚标记添加填充?