我是辅助功能类型的新手。关于何时使用咏叹调错误消息以及何时使用咏叹调警报存在困惑。
我需要在咏叹调生活区域中显示其中之一。我应该使用哪个?为什么?
答案 0 :(得分:2)
这不是一个非此即彼的情况。 aria-errormessage
是ARIA 1.1中的新功能。 aria-errormessage
的值是包含错误文本的另一个对象的ID(类似于aria-labelledby
和aria-describedby
)。这是一种通过关联的错误“连接”对象的方法。这就是全部。
aria-live
在您要宣布更改时使用,当然可以在错误情况下使用,但是在您更改页面上的文本并希望宣布更改时也使用
role="alert"
,例如,如果您有计时器或股票行情自动收录器或状态指示器(例如wifi连接断开)。
aria-live="assertive"
是用于设置"aria-atomic="true"
和aria-live="polite"
的“快捷方式”。这将导致宣布“警报”一词,然后读取您的文本更改。错误消息不一定必须是警报。如果我的输入字段要求某种格式,但我犯了一个错误,则应该宣布一个错误,但并不是很重要,它必须是一个警报。可能是简单的import java.util.concurrent.{LinkedBlockingQueue, ThreadPoolExecutor, TimeUnit}
import org.apache.commons.lang3.concurrent.BasicThreadFactory.Builder
import org.mongodb.scala.bson.collection.immutable.Document
import org.mongodb.scala.{MongoClient, Observable}
import scala.concurrent.duration._
import scala.concurrent.{Await, ExecutionContext}
object Test extends App {
val client = MongoClient("mongodb://localhost")
def insertObs = {
client.getDatabase("test").getCollection("test").insertOne(Document("test" -> 1))
}
val threadPool = new ThreadPoolExecutor(2, 2, 0L,
TimeUnit.MILLISECONDS, new LinkedBlockingQueue[Runnable],
new Builder().namingPattern("Custom pool").build())
val executionContext = ExecutionContext fromExecutor (threadPool)
val obs = Observable(List(1, 2, 3))
val res =
obs.observeOn(executionContext).map {
i =>
println("OBS " + Thread.currentThread().getName)
i
}.flatMap(_ => insertObs.map {
i =>
println("INSERT " + Thread.currentThread().getName)
i
})
Await.result(res.toFuture(), Duration(20, TimeUnit.SECONDS))
}
。
请记住,如果您使用警报(意味着断言的aria-live)并且您具有多个警报角色,则某些警报可以清除其他警报的队列,而您只会听到其中的一个。
https://www.w3.org/TR/wai-aria-1.1/#aria-live
用户代理或辅助技术 MAY 选择清除排队 发生主观更改时更改。 (例如, 自信区域可能会删除所有当前排队的更改)