屏幕阅读器无障碍性 – 在 C# 中检查 alt 文本

屏幕阅读器作为辅助技术

屏幕阅读器无障碍性是网络无障碍的重要组成部分,旨在使数字内容(尤其是网站和应用程序)对盲人或视障用户可访问。

屏幕阅读器是一种辅助技术,用于朗读在线内容。它将数字文本和视觉内容转换为语音或盲文,使视障用户能够浏览、交互和理解数字内容。屏幕阅读器不仅适用于盲人或弱视者,还适用于有认知障碍的用户,他们可能更容易通过听觉理解信息。

屏幕阅读器可以读取页面上的所有内容,例如段落文本、标题、列表、图像替代文本、链接、单选按钮以及其他交互元素。为了让屏幕阅读器能够准确朗读并让用户理解信息,必须提供替代文本(alt text)和有意义的标题。

请遵循以下基于 WCAG 的建议,以确保您的网站对依赖屏幕阅读器的用户可访问。这不仅对残障人士有益,还能改善所有用户的体验,并帮助您的网站在搜索引擎结果中获得更高排名。

替代文本

屏幕阅读器无法自动将图像内容转换为文字,即使图像本身仅包含文字。为了实现网页无障碍性,所有图像必须包含简短且描述性的替代文本(alt text),以便屏幕阅读器用户能够清楚理解图像的内容和目的。除视觉辅助外,替代文本还有以下作用:

图片替代文本 – img 标签中的 alt 属性

确保所有信息性 <img> 元素都包含简短且描述性的定义替代文本,所有装饰性 <img> 元素都包含空的 alt 属性(例如 alt="")。编写 alt 文本时,请记住其目的是向盲人用户传递图片内容和用途的信息,以便他们能够从 alt 文本中获得与视力正常用户从图片本身获取的信息一样多的信息。alt 文本应该阐明图片的意图、用途和含义。

在下面的示例中,图片内容告诉用户这幅肖像画的是一个女孩,以及她的样子:

1<img src="vermeer-girl-with-perl.png" alt="A European girl is depicted in an exotic dress, oriental turban and with a very large pearl as an earring">
A European girl is depicted in an exotic dress, oriental turban and with a very large pearl as an earring

为确保您的替代文本不会让使用屏幕阅读器的用户感到不适,请使用最少的词语,字词要具体,并且不要在替代文本中堆砌关键词短语。这里不适合放置关键词。不要宣称这是一张图片。主要任务是用文字描述,并帮助盲人理解图片在页面上的用途。

按钮中的 Alt 属性 – 按钮替代文本

在按钮和图片按钮中使用 alt 属性是一项至关重要的网页无障碍实践。图片按钮使用 alt 属性作为标签。alt 属性值必须清晰、简洁,并且能够代表用户激活按钮时执行的操作,而不是图片本身的描述。屏幕阅读器会大声朗读此文本,以便盲人或视障人士理解并操作按钮的功能。

检查 <input type="image"> 是否具有非空的 alt 属性。

1<input type="image" src="print.jpg" name="submit" alt="Print">

使用具体且有意义的描述。避免使用“按钮”或“图片”等通用术语。如果按钮执行某个操作,请描述该操作。例如,“提交”、“搜索”或“查看详情”。如果按钮是装饰性的且没有功能,请使用空的alt属性(alt="")或完全删除alt属性。

1<button type="submit">
2    <img src="submit-button.png" alt="Submit Form">
3</button>

使用 <object> 元素呈现内容的替代文本

<object> 元素将外部内容(例如图片、视频或交互式应用程序)嵌入到网页中。为了使残障人士能够访问这些内容,您应该在嵌入的内容类型上使用 alt 属性。

如果内容是图片,请在 <object> 元素中使用 alt 属性来提供替代文本。替代文本应描述内容的用途或提供有意义的描述。例如:

1<object >
2    <img src="aspose.gif" alt="Logo Aspose company" />
3</object> 
4
5<object data="companylogo.gif" type="image/gif">
6    <p>Company name</p>
7</object>

如果内容纯粹是装饰性的,没有传达有意义的信息,请考虑使用空的 alt 属性或省略它。

<label> 元素将文本标签与表单控件关联

使用 <label> 元素将文本标签与表单控件关联是 Web 开发中的一项基本实践,也是 Web 无障碍访问的重要方面。这种方法可以增强可用性,并确保用户(包括残障人士)能够有效地理解表单并与之交互。

使用 <label> 元素将表单控件与标签明确关联。标签使用 for 属性附加到特定的表单控件。for 属性的值必须与表单控件的 id 属性的值相同。

1<label for="firstname">First name:</label>
2<input type="text" id="firstname">
3
4<label for="password">Enter password:</label>
5<input type="password" id="password">

当控件获得焦点时,屏幕阅读器会播报标签,为残障用户提供上下文并帮助他们理解控件的用途。标签对于各种类型的表单控件都至关重要,例如文本输入框、单选按钮、复选框和下拉菜单。请务必为这些控件添加标签,以确保清晰易用的用户体验。所有 <input> 元素均使用明确关联的标签,但以下情况除外:

当无法使用 <label> 元素时,使用 title 属性来标识表单控件

当视觉设计中不包含可作为标签与控件关联的屏幕文本时,请使用 title 属性为表单控件提供可访问的名称。用户代理(包括辅助技术)可以发音此 title 属性。

Success

Payment card details
1<fieldset><legend>Payment card details</legend>
2<input id="cardnumber" name="cardnumber" title="Enter Card number" type="text" >
3<input id="cvc" name="cvc" title="Enter CVC code" type="text" >
4</fieldset>

Fail

输入字段没有标签绑定,并且缺少 title 属性:

1<label>Search for:</label>
2<input id="searchTerm" type="text" value="" name="searchTerm">

表情符号、表情符号、ASCII 艺术和黑客语言的替代文本

由于屏幕阅读器等辅助技术无法直接解读图像,因此它们依赖替代文本向用户传达非文本内容的含义。如果使用 ASCII、表情符号或表情符号图像,则必须提供图像含义的文本说明。由于您无法在 <span><div> 等元素上使用 alt 属性,并且 ARIA 建议不允许为通用元素指定可访问的名称,因此为了赋予表情符号可访问的名称,它们被定义为带有 role="img" ARIA 属性的图像,然后您可以使用 aria-label 属性创建可访问的名称。

role="img" 属性用于标识构成单个有意义图像的元素集合的容器。替代文本是一种单词或短语,其编码方式使得辅助技术可以将其与特定的非文本对象关联,并传达与非文本对象相同的信息。

Success

1<abbr title="sad">:(</abbr>
2<span aria-label="sad" role="img">:(</span>
3<img alt="sad" src="./sad.png">
4
5<div role="img" aria-label="scared face">(ㆆ _ ㆆ)</div>

Fail

1<div role="img">(ㆆ _ ㆆ)</div>

始终致力于提供清晰且有意义的替代文本,既能传达表情符号、表情符号、ASCII 艺术或黑客语言的精髓,又能保持预期的情感或表达基调。

Figure and figcaption

<figure> 元素用于容纳 <img><figcaption>,它是独立的,通常作为与文档主流程分离的单个块引用。<figure> 可以与文档主流程分离,而不会影响其含义。

<figure> 与其包含的 <figcaption> 建立语义关联,从而提供图形的摘要或附加信息,并/或将其与文档关联起来。但是,<img> 仍然需要替代文本,并且为了避免冗余,此信息不应通过 <figcaption> 传递。

1<figure>
2    <img src="./sunset.jpg" alt="Sunset on the sea" />
3    <figcaption>Sunset on the sea</figcaption>
4</figure>

如何使用 Aspose.HTML for .NET 检查图像的替代文本

让我们看一下与检查图像和标签的替代文本相关的代码片段。要检查页面的替代文本和无障碍标准,您需要遵循以下步骤:

  1. 使用 WebAccessibility() 构造函数创建负责 Web 无障碍验证的 WebAccessibility 类的实例。
  2. 使用 webAccessibility 对象的 Rules 属性,该属性提供对 Web 无障碍规则集合的访问。
  3. 调用 CreateValidator() 方法创建验证器对象。您实际上是在设置一个验证器,它将根据您指定的特定无障碍指南及其成功标准来检查网页内容。
  4. 使用 HTMLDocument() 构造函数之一加载 HTML 文档。
  5. 使用 Validate(document) 方法检查 HTML 文档的无障碍性。结果存储在 validationResult 变量中。
  6. 检查验证是否成功。打印有关错误的详细信息,包括相关的 HTML 元素。

以 HTML 文件 alt-tag.html 为例:

 1<html>
 2    <body>
 3        <img src="./resourses/login.png" alt="Login icon">
 4
 5        <label>Enter login:</label>
 6        <!--error: for input missing label with for="login" -->
 7        <input type="text" id="login">
 8
 9        <label for="password">Enter password:</label>
10        <input type="password" id="password">
11    
12        <!--error: for image alt attribute must not be empty -->
13        <img src="./resourses/sign.png" alt="">
14    </body>
15</html>

以下 C# 代码片段演示了创建验证器、加载 HTML 文档并根据 Web 可访问性要求对其进行验证的基本步骤,即"1. Perceivable"、“1.1 Text Alternatives"规则:

 1// Validate HTML image alt text accessibility with detailed error reporting using C#
 2
 3// Prepare a path to a source HTML file
 4string documentPath = Path.Combine(DataDir, "alt-tag.html");
 5
 6// Initialize webAccessibility container
 7WebAccessibility webAccessibility = new WebAccessibility();
 8
 9// Get from the rules list Principle "1. Perceivable" by code "1" and get guideline "1.1 Text Alternatives"
10Guideline guideline = webAccessibility.Rules.GetPrinciple("1").GetGuideline("1.1");
11
12// Create an accessibility validator - pass the found guideline as parameters and specify the full validation settings
13AccessibilityValidator validator = webAccessibility.CreateValidator(guideline, ValidationBuilder.All);
14
15// Initialize an HTMLDocument object
16using (HTMLDocument document = new HTMLDocument(documentPath))
17{
18    ValidationResult validationResult = validator.Validate(document);
19    if (!validationResult.Success)
20    {
21        // Get all the result details 
22        foreach (RuleValidationResult ruleResult in validationResult.Details)
23        {
24            // If the result of the rule is unsuccessful
25            if (!ruleResult.Success)
26            {
27                // Get an errors list 
28                foreach (ITechniqueResult result in ruleResult.Errors)
29                {
30                    // Check the type of the erroneous element, in this case, we have an error in the HTML Element
31                    if (result.Error.Target.TargetType == TargetTypes.HTMLElement)
32                    {
33                        HTMLElement rule = (HTMLElement)result.Error.Target.Item;
34                        Console.WriteLine("Error in rule {0} : {1}", result.Rule.Code, result.Error.ErrorMessage);
35                        Console.WriteLine("HTML Element: {0}", rule.OuterHTML);
36                    }
37                }
38            }
39        }
40    }
41}

文件检查的结果将是一个包含一个 IError 类型错误的结果列表。程序将输出到控制台:

1    Error in rule H37 : Img element missing an alt attribute. The value of this attribute is referred to as "alt text".
2    HTML Element: <img src="./resourses/sign.png" alt="">
3    Error in rule H44 : Check that the label element contains for attribute.
4    HTML Element: <label>Enter login:</label>
5    Error in rule H65 : Check that the title attribute identifies the purpose of the control and that it matches the apparent visual purpose.
6    HTML Element: <input type="text" id="login">
7    Error in rule F65 : Absence of an alt attribute or text alternative on img elements, area elements, and input elements of type "image".
8    HTML Element: <img src="./resourses/sign.png" alt="">

参考

另请参阅

  • Web 无障碍访问检查 一章中,您将学习如何使用 Aspose.Html.Accessibility 和 Aspose.Html.Accessibility.Results 命名空间中的类和方法,检查网站无障碍访问是否符合所有 WCAG 标准,或仅检查特定标准。
  • 如果您想了解如何根据 WCAG 标准(Web 无障碍访问领域的全球权威标准)正确调整 Web 内容的对比度,请参阅文章 颜色对比度无障碍访问。您将了解如何使用 C# 测试颜色对比度无障碍访问,并使您的 Web 内容易于所有用户阅读。
  • 如果您想了解如何让多媒体内容更具包容性,并让包括残障人士在内的更广泛的受众都能访问,请参阅 多媒体无障碍 一文。本文包含一些 C# 示例,用于根据 WCAG 标准检查多媒体无障碍最佳实践。
  • 无障碍验证器 一文中,您将了解 AccessibilityValidator 类,该类可用于测试 Web 无障碍规则,例如原则、指南和标准。
  • 文章 错误和警告 讨论了在网站无障碍测试期间帮助收集错误和警告信息的类和接口。它重点介绍了报告错误的失败标准和方法,并提供了一个 C# 示例,用于在测试 HTML 文档后检索 Web 无障碍错误。

Aspose.HTML 提供免费的在线 网络可访问性检查器。此工具可扫描网页,验证其是否符合 WCAG 标准,识别问题并提出改进建议。您可以即时了解网站的合规性,从而确定需要更正的范围以及网站或 HTML 文档的当前状态与 WCAG 要求之间的差距。

Text “网络可访问性检查器”

Close
Loading

Analyzing your prompt, please hold on...

An error occurred while retrieving the results. Please refresh the page and try again.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.