backbone.js Firefox上的VoiceOver-将所有元素读为可点按

bgtovc5b  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(188)

当我们在页面上使用VoiceOver时,它会在标题、表格、段落等每个元素上显示“可点击”一词。
页面正在使用Backbone生成UI。每当视图具有events属性时,就会出现问题。如果我删除events属性或将其留空,则不会出现问题。
有没有人不得不处理同样的问题?知道我可以在这里做什么吗?我们需要那些在 Backbone 视图的events属性中描述的事件处理程序:)

PS:这里有一个JS小提琴演示的问题:https://jsfiddle.net/e5utd39o
此外-问题的屏幕截图:https://postimg.cc/YGyGmK2f
我猜这个问题的发生是因为Backbone在视图的顶层元素上使用了事件委托,并且因为所有的东西都被放在了根元素中--这导致了Firefox上VoiceOver的行为。但是即使我是对的--我也不知道如何解决这个问题。

lawou6xi

lawou6xi1#

您的fiddle代码没有显示这个问题,因为它没有向除按钮之外的任何对象添加单击事件处理程序。这些对象没有声明为“可单击”。
我刚刚尝试了一个简单的例子(sans Backbone)。是的,Firefox确实用click处理程序把“clickable”附加到“不可操作”元素的可访问名称上。它不会对按钮等可操作元素这样做。
这并不一定是错的,真实的的问题是:为什么在标题、表格和段落上需要单击处理程序呢?
如果你真的需要一个标题的行为(语义上)像一个标题,它不应该有点击事件处理程序。标题有一个非常重要的角色。可点击不是它。(“一个角色是一个承诺”)。
你可以把一个按钮放在一个标题里面,并把点击事件附加到它上面。作为一个按钮,它将被声明为“button,”而不是“可点击的”。2另一种选择是在标题中放一个超链接。3当然这会被宣布为一个“链接”。4这两种方法都提供了关于元素如何被期望表现的可靠线索。如果点击标题可以切换标题内容的可见性,那么这里有一个正式的模式叫做“disclosure”,由w3c提供,你应该使用它。
“可点击”没有给出这样的提示,但我想你根本不需要可点击的标题和段落。
在我看来,为每个"View“添加单击事件处理程序,即使是不可操作的,都是错误的。也许您可以只为不可操作的内容使用默认的View行为,而为实际需要可单击的内容保留”OperableView“。
如果您能够区分(可操作的/不可操作的),您将更容易地实现可访问性,因为这种区分是ARIA的核心。
你的虚假“可点击”公告将自动消失。

相关问题