使用 AT 的用户是否可以访问 setCustomValidity() 的值?

Is the value of setCustomValidity() accessible to users using AT?

假设我使用 setCustomValidity() 为字段设置自定义有效性消息来描述表单字段无效的原因。使用辅助技术的用户是否可以使用此内容?如果是,用户通常如何使用它?

例如,

my_element.setCustomValidity("This email address already exists")

如果我想确保使用屏幕阅读器的人会看到这条消息,我是否应该避免使用 setCustomValidity() 而是依赖 aria-invalidaria-describedby

<input name="email" aria-invalid="true" aria-described="error">
<p id="error">This email address already exists</p>

它会根据您使用的屏幕阅读器和浏览器工作。

例如,对于 NVDA 和 Firefox,它会正确地宣布错误消息,而对于 Chrome,它只会宣布错误。

最好的选择是继续使用 setCustomValidity(),只要错误没有被所有屏幕阅读器-浏览器组合正确宣布,使用 Success Criterion 3.3.1 - Error Identification[=15= 中可用的技术之一]

例如,Using ARIA role of alert for Error Feedback in Forms

<input name="email" aria-invalid="true" aria-describedby="alert_email" />
<p role="alert" id="alert_email">This email address already exists</p>

NOTE: The ARIA describedby attribute may be provided as a helpful addition to provide a reference to the error if the user desires the error message to be conveyed again, but is not strictly necessary for successful application of this technique, and is incidental to the application of this technique