我希望JAWS在导航dijit.Tree时告诉用户他们所处的节点类型

时间:2016-12-22 17:11:13

标签: dojo accessibility jaws-screen-reader dijit.tree

我们有一个dijit.Tree,它通过一个图标来表示节点类型。该图标是一个独特的指示器,告诉该人该节点是“书”或“DVD”或“杂志”。

dijit将图标渲染为CSS中的背景图像,我们知道屏幕阅读器看不到。

我尝试重写getTooltip方法,提供一个说“book”或“DVD”的工具提示。它成功地将“title”属性添加到“dijitTreeRow”。如果我将鼠标悬停在节点上,我会看到文本。当用户向下移动以从一个节点进入下一个节点时,这一点并不专注于此。

导航树时,向上和向下箭头遍历节点。将显示带有可见文本的跨度,并读取该字符串。您可以在最基本的示例中看到虚线焦点并使用JAWS听到:https://dojotoolkit.org/reference-guide/1.10/dijit/Tree.html

我无法弄清楚的是如何创建一个屏幕阅读器将会显示的指示器,它将与“The Great Gatsby”一起读作“Book”。

当图像是盲人用户应该听到的指示符时,有没有人有关于如何使屏幕阅读器可以访问这个dijit小部件的任何提示?

1 个答案:

答案 0 :(得分:0)

树支持HTML标签,通过在model上设置labelType属性。

假设您不想更改商店数据(或覆盖getLabel方法),您可以重新实现dijit/Tree.getLabel并生成HTML标签,并用{{1}包装它使用span

(代码取自dijit.Tree reference)。

aria-label

如果您的数据可能包含您不想呈现的HTML字符,请转义var myModel = new ObjectStoreModel({ store: myStore, labelType: "html", // Hack to tell the tree node to render as HTML query: {id: 'world'} }); var tree = new Tree({ model: myModel, getLabel: function(item) { var label = this.model.getLabel(item); // dojo.string return dstring.substitute("<span aria-label='dvd ${0}'>${0}</span>", [label]); } }); 中的字符。