元素位置的规则。
最后,示例站点在提供页时使用内容协商。当使用能够理解 application/xhtml+xml MIME 类型的浏览器从 Web 站点请求页时,将以 MIME 类型提供该页;否则,将以 text/html 类型提供该页。
内容协商是用 Global.asax 文件中的以下事件处理程序完成的。
Sub Application_PreSendRequestHeaders(ByVal s As Object, _
ByVal e As EventArgs)
If Array.IndexOf(Request.AcceptTypes, _
"application/xhtml+xml") > -1 Then
Response.ContentType = "application/xhtml+xml"
End If
End Sub
默认页的可访问性功能
当无法提供 javascript 的文本等效内容时,WCAG 和 508 节可访问性准则都禁用客户端 javascript。为了满足这些准则,Default.aspx 页不依赖于客户端 javascript。即使您在浏览器中关闭 javascript,该页仍然能够正常工作。
为了满足该要求,在实现菜单时必须完成额外的工作。默认情况下,ASP.NET Menu控件为每个菜单项呈现 javascript 以处理客户端单击事件。但是,当为菜单项提供了 NavigateUrl 属性时,该菜单项将不再使用 javascript。
在示例站点中,为每个菜单项提供了一个指回到 Default.aspx 页的 NavigateUrl 属性。当您单击菜单项时,将重新加载 Default.aspx 页。Page_Load 事件处理程序用来检测单击了哪个菜单项,而且该子例程用当前菜单选择更新菜单。
使用 Menu 控件的好处是,Menu 控件自动生成“跳过导航”链接。如果使用 Tab 键浏览 Default.aspx 页中的每个元素,会注意到(观察浏览器的状态栏)有一个跳过菜单内容的隐藏链接。Menu 控件使您能够自动满足 WCAG 和 508 节准则,该准则要求您提供相应的方法以跳过重复性的导航链接。
搜索页
搜索页包含一个表单,使 Web 站点的用户能够通过提供书籍作者、书名、书籍关键字或者通过提供复杂查询来搜索书籍(参见图 15)。查询的结果显示在 GridView 控件中。Search.aspx 页包含在清单 12 中。
图 15. 搜索页
清单 12. Search.aspx
<%@ Page Language="VB" MasterPageFile="~/SiteMaster.master"
Title="Search Books" %>
Search Books
<%#Server.HtmlEncode(Eval("ItemAttributes.Title"))%>
Authors:
<%#Amazon.FormatAuthor(Eval("ItemAttributes.Author"))%>
Price:
<%#Amazon.FormatPrice(
Eval("ItemAttributes.ListPrice.Amount"))%>
Sales Rank:
<%#Eval("SalesRank")%>
搜索页的 XHTML 功能
就像默认页一样,搜索页不包含任何表示性元素或属性。搜索页的样式和布局完全封装在通过 ASP.NET 主题与该页相关联的外部样式表中。
同样,像默认页一样,搜索页使用内容协商。如果有人用能够识别 application/xhtml+xml MIME 类型的浏览器请求搜索页,则将以该 MIME 类型提供该页;否则,将以 text/html 类型提供该页。
搜索页的可访问性功能
搜索页包含一个表单。或者,更准确地说,该页包含被划分为两个子表单的单个表单。它包含一个“Quick Search”表单和一个“Power Search”表单。
请注意,该表单用 HTML 标记划分为两个子表单。 标记使您能够将逻辑相关的表单元素组合在一起。可访问性准则要求您在处理复杂表单时使用 标记(请参阅 WCAG 12.3)。
而且,请注意,每个表单字段都与其标签显式关联。每个 ASP.NET 控件都包含一个指向其相应表单字段的 AssociatedControlID 属性。标签和字段之间的这些显式关联可以帮助屏幕阅读器的用户确定特定表单字段的用途。
最后,请注意每个 Label 控件都分配了一个访问键。访问键使您无需使用鼠标就能够方便地浏览表单字段。例如,如果按 ALT+A,则可以输入作者的姓名。如果随后按 ALT+S,则会提交“Quick Search”表单,并且在 GridView 中显示结果。换句话说,无需触摸鼠标即可方便地执行搜索。
如果按 ALT 键,则会自动显示访问键(参见图 16)。这通过 javascript 实现。请注意,在每个表单字段后面都会出现一个 标记。例如,Title 搜索字段是通过以下代码实现的。
access key is t
当按 ALT 键时,将执行客户端 javascript,并且显示 标记的内容。
图 16. 搜索表单访问键
您可能为该功能感到担心,因为按照可访问性准则,当 javascript 和样式表关闭时,该页必须能够继续工作(WCAG 准则 6)。幸运的是,当 javascript 和样式表都被禁用时,该页确实能够正常工作。在这种情况下, 标记的内容不再隐藏,并且总是显示访问键(参见图 17)。
图 17. 搜索表单适度降格
母版页
示例 Web 站点在幕后使用一个名为 SiteMaster.master 的 ASP.NET 2.0 母版页。母版页使您能够在 Web 站点的多个页中包含相同的内容,并创建相同的布局。母版页通过 Web.Config 文件中的以下配置设置与示例 Web 站点中的每个页相关联。
母版页的内容包含在清单 13 中。
清单 13. SiteMaster.master
<%@ Master Language="VB" %>
Super Super Books
母版页的 XHTML 功能
利用母版页,可以方便地为 Web 站点中的所有页提供正确的 DOCTYPE。SiteMaster.master 页包含 XHTML 1.0 Strict DOCTYPE。在母版页中指定 DOCTYPE 的好处是:如果您将来需要更改 Web 站点中所有页的 DOCTYPE,那么只需在一个位置更改它。例如,在不久之后的某一天,您可能希望迁移到 XHTML 1.1 Web 站点并修改 DOCTYPE 以反映所做的更改。
母版页还包含一系列一致性标识语,它们出现在示例 Web 站点中每一页的页脚。一致性标识语通告人们该 Web 站点符合 XHTML、CSS 和 WCAG 1.0 Web 标准(参见图 18)。
图 18. 一致性标识语
母版页的可访问性功能
示例 Web 站点中每一页的顶部都包含一个链接,可以使用该链接切换用于显示相应页的样式表。每一页都可以用下列两个版本之一进行显示:“普通文本”版本和“大型文本”版本。在选择“大型文本”版本以后,Web 站点中所有文本的大小都会有所增加以使可读性更强(参见图 19)。
图 19. 大型文本大小
用户只需要执行该选择一次。如果某个用户选择 Web 站点的“大型文本”版本,那么该首选项会被自动记录下来,并且每当该用户返回该 Web 站点时都会使用它。该功能是通过利用 ASP.NET 2.0 框架的另一项新功能实现的:配置文件。配置文件使您能够存储用户在多次访问 Web 站点时的设置。
配置文件在 Web.Config 文件中定义。
该配置文件定义一个名为 AccessibleStyleSheet 的布尔型属性。在 Web.Config 文件中定义该属性以后,就可以在任何 ASP.NET 页中,通过由 Page 类公开的 Profile 属性来读取或设置该属性。例如,要将 AccessibleStyleSheet 属性设置为值 True,并且显示该 Web 站点的“大型文本”版本,可以编写以下代码。
Profile.AccessibleStyleSheet = true
母版页包含用于选择 Web 站点的“普通文本”或“大型文本”版本的所有逻辑。HyperLink 控件用于使 Web 站点访问者能够执行该选择。在单击 HyperLink 以后,Page_Load 事件处理程序检测用户的选择并设置 AccessibleStyleSheet Profile 属性。
如果使用 LinkButton 控件(而不是 HyperLink 控件),那么这里的代码会更加简单。但是,可访问性准则再一次禁止我们这样做,因为 LinkButton 控件依赖客户端 javascript。
在选择“大型文本”版本以后,将向该页中添加对附加样式表的引用。该样式表包含单个规则。
body
{
font-size: x-large;
}
该规则将正文字体大小设置为值 x-large。因为主样式表(包含在 SiteTheme 文件夹中)中指定的所有字体都使用相对大小,所以修改正文元素的字体大小会自动增加 Web 站点中所有元素的字体大小。
小结
Web 标准是一个好东西。通过遵循 Web 标准,您能够以最少的工作,让最广大的受众访问您的 Web 站点。您的 Web 站点将与更多的浏览器兼容,并且它们更有可能在将来继续正常工作。
ASP.NET 2.0 框架旨在使您能够轻松地生成满足 Web 标准的 Web 站点。该框架使您能够轻松地生成 XHTML Web 站点。在 ASP.NET 2.0 框架中,默认情况下,所有 ASP.NET 控件都呈现 XHTML 元素和属性。而且,Visual Studio .NET 2005 和 Visual Web Developer 允许您在生成页的过程中自动针对 XHTML 标准验证这些页的有效性。
通过 ASP.NET 2.0 框架,还可以更容易地生成可被残疾人士访问的 Web 站点。ASP.NET 2.0 框架中的控件包含大量在设计时考虑了可访问性的新属性。例如,每个呈现图像的 ASP.NET 控件都使您能够呈现图像的替换文本。此外,所有新导航控件都包含“跳过导航”链接,以使残疾人士可以更容易地浏览 Web 站点。
关于作者
Stephen Walther 曾经撰写过有关 ASP.NET, ASP.NET Unleashed 的畅销书。他还是 ASP.NET Community Starter Kit(一个由 Microsoft 开发的示例 ASP.NET 应用程序)的架构师和首席开发人员。他已经通过其公司 Superexpert 为美国各地的公司(包括 NASA 和 Microsoft)提供 ASP.NET 培训。
转到原英文页面
本文作者:佚名 来源:http://www.microsoft.com
CIO之家 www.ciozj.com 微信公众号:imciow
免责声明:本站转载此文章旨在分享信息,不代表对其内容的完全认同。文章来源已尽可能注明,若涉及版权问题,请及时与我们联系,我们将积极配合处理。同时,我们无法对文章内容的真实性、准确性及完整性进行完全保证,对于因文章内容而产生的任何后果,本账号不承担法律责任。转载仅出于传播目的,读者应自行对内容进行核实与判断。请谨慎参考文章信息,一切责任由读者自行承担。