让屏幕阅读器读出 SVG 图形中的 <text> 个项目?
Making screen-readers read out <text> items in SVG graphics?
我找遍了所有地方,但没有成功。
我正在制作如下所示的 SVG,以使其具有可扩展性,同时也帮助有阅读障碍的人,以便他们可以突出显示文本并使用 Read Out Loud 等插件:
但是我无法让我的 NVDA 副本在我翻阅标签时读出标签索引字段。我在各种事情上尝试了字段和 aria-label...
有什么我可以更改的简单内容,以便 NVDA(和类似的屏幕阅读器)在我翻阅时读出文本(NVDA 在 HTML 页上执行此操作)。
还是我应该将描述中所有文字的完整描述放在顶部?
我注意到您的 svg 根目录中有 role="img"
。这让一切都很无聊,因为它告诉可访问性 API 它只是一个元素,其可访问名称始终是 aria-labelledby="svgTitle svgDesc"
尝试将其更改为 role="graphics-document"
(或者如果您想要更有趣的互动,则可能 role="application"
),我认为您的运气会好得多。
另一种选择是从 <svg>
元素中删除 role
属性。这听起来违反直觉,但它应该使任何 <text>
元素都可访问。
例如,请参阅这篇 SitePoint 文章中的技巧 5,其中有很好的背景知识和其他有用的技巧,可以让 SVG 在不同的用例中更易于访问:
Tips for Creating Accessible SVG
来自以上文章:
<svg version="1.1" width="300" height="200" aria-labelledby="title desc">
<title id="title">Green rectangle</title>
<desc id="desc">A light green rectangle with rounded corners and a dark green border.</desc>
<rect width="75" height="50" rx="20" ry="20" fill="#90ee90" stroke="#228b22" stroke-fill="1" />
<text x="35" y="30" font-size="1em" text-anchor="middle" fill="#000000">Website</text>
</svg>
我找遍了所有地方,但没有成功。 我正在制作如下所示的 SVG,以使其具有可扩展性,同时也帮助有阅读障碍的人,以便他们可以突出显示文本并使用 Read Out Loud 等插件:
但是我无法让我的 NVDA 副本在我翻阅标签时读出标签索引字段。我在各种事情上尝试了字段和 aria-label...
有什么我可以更改的简单内容,以便 NVDA(和类似的屏幕阅读器)在我翻阅时读出文本(NVDA 在 HTML 页上执行此操作)。 还是我应该将描述中所有文字的完整描述放在顶部?
我注意到您的 svg 根目录中有 role="img"
。这让一切都很无聊,因为它告诉可访问性 API 它只是一个元素,其可访问名称始终是 aria-labelledby="svgTitle svgDesc"
尝试将其更改为 role="graphics-document"
(或者如果您想要更有趣的互动,则可能 role="application"
),我认为您的运气会好得多。
另一种选择是从 <svg>
元素中删除 role
属性。这听起来违反直觉,但它应该使任何 <text>
元素都可访问。
例如,请参阅这篇 SitePoint 文章中的技巧 5,其中有很好的背景知识和其他有用的技巧,可以让 SVG 在不同的用例中更易于访问: Tips for Creating Accessible SVG
来自以上文章:
<svg version="1.1" width="300" height="200" aria-labelledby="title desc">
<title id="title">Green rectangle</title>
<desc id="desc">A light green rectangle with rounded corners and a dark green border.</desc>
<rect width="75" height="50" rx="20" ry="20" fill="#90ee90" stroke="#228b22" stroke-fill="1" />
<text x="35" y="30" font-size="1em" text-anchor="middle" fill="#000000">Website</text>
</svg>