Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 弹出窗口和aria live的可访问性问题_Javascript_Html_Accessibility - Fatal编程技术网

Javascript 弹出窗口和aria live的可访问性问题

Javascript 弹出窗口和aria live的可访问性问题,javascript,html,accessibility,Javascript,Html,Accessibility,我有一条错误消息,我正在使用aria live=polite。 这是第一次出现错误。 第二次它再次宣布,如果我在同一页面上打开弹出窗口,并且该页面出现错误 <div aria-live="polite"> <error-message-component></error-message-component> </div> 我无法找到为什么会发生这种情况,因为它已经向用户宣布,弹出窗口后面的内容有aria hidden=“true”所以问题是错

我有一条错误消息,我正在使用aria live=polite。 这是第一次出现错误。 第二次它再次宣布,如果我在同一页面上打开弹出窗口,并且该页面出现错误

<div aria-live="polite">
<error-message-component></error-message-component>
</div>


我无法找到为什么会发生这种情况,因为它已经向用户宣布,弹出窗口后面的内容有aria hidden=“true”

所以问题是错误消息(aria live)宣布了两次?第一次是预期的,但是如果你打开一个弹出窗口,它会第二次被宣布吗

如果您仅指定
aria live=“little”
未指定,则这意味着只要您更改(或其任何子DOM元素)中的文本(添加、删除或更改文本),或者如果您添加子DOM元素,都应宣布aria live区域(但不删除子DOM元素)

因此,您应该确认在显示弹出窗口时,没有子DOM节点添加到您的aria live区域,并且aria live区域内的文本没有更改


同时检查弹出窗口是否引用了aria live区域。如果弹出窗口中有一个指向aria live区域的
aria标签或
aria describedby
,那么aria live区域将作为弹出窗口的一部分被宣布。

因此问题在于错误消息(aria live)是否已宣布两次?预计第一次,但如果打开弹出窗口,则将再次宣布

如果您仅指定
aria live=“little”
未指定,则这意味着只要您更改(或其任何子DOM元素)中的文本(添加、删除或更改文本),或者如果您添加子DOM元素,都应宣布aria live区域(但不删除子DOM元素)

因此,您应该确认在显示弹出窗口时,没有子DOM节点添加到您的aria live区域,并且aria live区域内的文本没有更改


同时检查弹出窗口是否引用了aria live区域。如果弹出窗口中有一个指向aria live区域的
aria标签或
aria DESCRIPBEDY
,则aria live区域将作为弹出窗口的一部分发布。

您使用的是哪个屏幕阅读器?这两者之间是否一致t屏幕阅读器?您使用的是哪个屏幕阅读器?不同屏幕阅读器之间是否一致?我认为这是由于aria相关,因为我在aria live region添加了aria hidden属性。这可能是个问题。有没有办法解决此问题?向live region添加
aria hidden
属性不会导致live region出现问题要读取的离子。没有实际的代码可查看,很难猜测问题是什么我发现了我猜的问题。我的内部有一个tabindex。当我删除tabindex时,它开始工作。但我无法理解由于tabindex 0添加
tabindex=“0”而可能发生的情况
将不会自动导致实时区域被宣布。它将允许用户对实时区域进行制表,此时将宣布该区域,因为它具有当前键盘焦点。我认为这是由于aria相关,因为我正在aria live region中添加aria hidden属性。这会是一个问题吗?有办法解决这个问题吗?将
aria hidden
属性添加到活动区域不会导致读取活动区域。如果没有实际代码查看,很难猜测问题是什么我发现了我猜想的问题。我的内部有一个tabindex。从我移除tabindex的那一刻起,它就开始工作。但我无法确定它是如何发生的由于tabindex 0添加
tabindex=“0”
而导致的异常将不会自动导致宣布活动区域。它将允许用户通过TAB键转到活动区域,此时将宣布活动区域,因为它具有当前键盘焦点。