提问人:Evry 提问时间:7/26/2023 更新时间:7/27/2023 访问量:140
屏幕阅读器是否理解 HTML 转义字符(如双引号的 “)?
Do screen readers understand HTML escape characters (like " for double quotes)?
问:
我正在更新一个 aria-label 值方法,该方法当前正在转义该值,以便在 HTML 元素属性中安全使用。
因此,例如,它将转换为 。<span> abc"
<span> abc"
问题是 JAWS 按原样读取它,它不会翻译编码。
这是所有(或大多数)屏幕阅读器的特征吗?或者这只是一个错误?
我对此的最初解决方案是将需要(或通常)转义的符号(<,>、“、' 和 &)转换为其名称(例如,<将转换为”小于“)。这是一个有效的解决方案吗?
答:
所以你要包括HTML实体吗?我不确定我是否遵循这种情况。咏叹调标签只是按原样宣布,特殊字符不必转义。因此,如果你想让咏叹调标签说“<span>”,你可以只用.aria-label 不会呈现,因此无需转义任何内容。aria-label
aria-label="<span>"
现在,大多数屏幕阅读器都有“详细”设置,因此默认情况下不会读出某些标点符号和特殊字符,但用户可以完全控制它。因此,在示例中,屏幕阅读器可能只说“span”。但是,如果用户更改其详细程度以读取所有特殊字符,则可能会显示“小于、跨度、大于”。aria-label="<span>"
评论
aria-label
foo" <script>/* some evil JS */</script> foo="
你的意图不是很清楚,但是:
- 与所有其他 HTML 属性一样,aria-label 的内容原则上只能是纯文本。不允许使用 HTML。因此,如果您的内容直接由屏幕阅读器按原样拍摄,这是完全正常的。
- 除了在特定的上下文中,如编程、数学等有意义的上下文,在标签中包含特殊符号(如“<”)通常是一个坏主意。标签必须只是纯文本,不应该有任何无用的装饰。对于屏幕阅读器用户来说,这只是噪音。
- 通常,通过字面描述来替换完全可读/可访问的符号是一个非常糟糕的主意。
关于第 1 点:如果您需要在标签中添加 HTML,请考虑将 aria-label 更改为 aria-labelledby 并引用实际的 HTML 元素,该元素可能位于屏幕外/视觉上隐藏,您可以在其中完全自由地使用 HTML。 如果您需要添加换行符 (\n) 或制表符 (\t),也请考虑该解决方案,因为 aria-label 可能也不支持它们。
请注意,将 HTML 放在 title 属性中似乎在某些框架中非常流行,但实际上完全错误,并且会导致屏幕阅读器读取 HTML 代码。
关于第3点: 通常,用文字描述来替换一个完全可读/可访问的符号是一个非常糟糕的主意。 在许多语言中,这些符号可以有不同的名称,如果用户没有得到与以前相同的名称,他/她会感到困惑。例如,“<”可以看作是“小于”,也可以看作是“开角括”或“左角括”。 此外,它会让盲文用户倍感困惑,因为他们会从字面上阅读盲文显示器上完整写的“小于”,而不是他们习惯的单个盲文“<”字符。无论是在“<”有意义的地方,这充其量只是浪费时间和精力来理解它的实际含义。
评论
While much of what you say is *accurate*
评论