我们有一个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小部件的任何提示?
答案 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]);
}
});
中的字符。