spark wai_WAI-ARIA对自动完成小部件的支持

spark wai

在这篇文章中,我想讨论一个AutoComplete小部件的可访问性。 在您键入该字段时,通常会使用“自动完成”窗口小部件提供建议。 在当前的工作中,我基于Twitter的Typeahead (一个灵活JavaScript库)实现了JSF组件,该库为构建健壮的typeahead提供了坚实的基础。 Typeahead小部件具有伪代码形式的可靠规范 ,详细说明了UI对事件的React。 Typeahed可以在相应的输入字段中显示提示,例如google的搜索字段显示该提示,突出显示匹配项,处理自定义数据集和预编译的模板。 此外, Bloodhound建议引擎还提供预取,智能缓存,快速查找以及回填远程数据的功能。



提前输入

尽管有许多功能,但Typeahead的一大缺点是对WAI-ARIA的支持不足(我要说到现在为止,它是完全缺失的)。 AutoComplete小部件的设计应使屏幕阅读器和其他辅助工具的用户可以立即使用。 我决定添加完全的WAI-ARIA支持,完成此任务并将我的请求请求发送到GitHub。 以下是带有解释的新“ WAI-ARIA感知”标记(未省略相关HTML属性)。

<input class="typeahead tt-hint" aria-hidden="true"><input class="typeahead tt-input" role="combobox"aria-autocomplete="list/both"aria-owns="someUniqueID"aria-activedescendant="set dynamically to someUniqueID-1, etc."aria-expanded="false/true"><span id="someUniqueID" class="tt-dropdown-menu" role="listbox"><div class="tt-dataset-somename" role="presentation">...<span class="tt-suggestions" role="presentation"><div id="someUniqueID-1" class="tt-suggestion" role="option">... single suggestion ...</div>...</span>...</div>
</span><span class="tt-status" role="status" aria-live="polite" style="border:0 none; clip:rect(0, 0, 0, 0); height:1px;width:1px; margin:-1px; overflow:hidden; padding:0; position:absolute;">... HTML string or a precompiled template ...
</span>

tt-hint类的第一个输入字段模拟视觉提示(如上图)。 提示以可视方式完成对匹配建议的输入查询。 可以通过按右箭头或Tab键完成对建议(提示)的查询。 该提示与屏幕阅读器无关,因此我们可以将aria-hidden =“ true”应用于该字段。 屏幕提示会忽略该提示。 为什么不重要? 因为我们将通过aria-live =“礼貌”(将在下面进行说明)通过“状态”区域强行阅读匹配的建议。

下一个输入字段是用户输入查询的主要元素。 它应该具有角色=“ combobox”。 对于自动完成,建议使用此角色。 有关更多详细信息,请参见WAI-ARIA官方文档 。 实际上,docu还显示了AutoComplete的粗略标记结构!

主输入字段应具有各种ARIA状态和属性。 aria-autocomplete =” list”表示当用户输入时,输入以列表的形式提供自动完成建议。 aria-autocomplete =“ both”表示提示也由提示(除了列表)提供。 aria-owns属性指示输入字段和带有建议的列表之间存在父/子关系。 当无法使用DOM层次结构表示关系时,应始终设置此属性。 否则,屏幕阅读器将很难找到包含建议的列表。 在我们的例子中,它指向列表的ID。 最有趣的属性是aria-activedescendant。 视力不佳的用户通过箭头键在列表中导航。 aria-activedescendant属性将焦点更改传播到辅助技术-对其进行了调整以反映已导航到的当前子元素的ID属性。 在上图中,选中了“阿拉伯的劳伦斯”项目(突出显示)。 aria-activedescendant设置为此项的ID,屏幕阅读器会向盲人用户“ Lawrence of Arabia”读取。 注意:焦点停留在输入字段上,因此您仍然可以编辑输入值。 我建议在Google的Web Accessibility简介中阅读有关此属性的更多信息。

自动完成驱动器注释更新

aria-expanded属性指示带有建议的列表是展开(true)还是折叠(false)。 列表状态更改时,此属性将自动更新。

带有建议的列表本身应具有“列表框”角色。 这意味着,小部件允许用户从选项列表中选择一个或多个项目。 应将role =“ option”应用于列表中的各个结果项目节点。 我建议阅读一篇有趣的文章“在构造自动完成列表时使用“列表框”和“选项”角色” 。 对于屏幕阅读器来说不重要的部分应标记为role =“ presentation”。 该角色说“我的标记仅适用于非盲人用户”。 您可能会问,角色=“应用程序”是什么? 对我们重要吗? 并不是的。 在阅读了“并非所有ARIA小部件都应具有角色=”应用程序”之后,我跳过了它。

标记中的最后一个元素是具有角色=“状态”和属性aria-live =“礼让”的范围。 这有什么用? 您可以通过让用户知道自动完成的结果(通过自动朗读的文本)来为小部件增添趣味。 小部件应将要说的文本添加到移到视口之外的元素中。 这是所提到的具有应用样式的span元素。 样式与jQuery CSS类ui-helper-hidden-accessible完全相同,后者以可视方式隐藏内容,但仍可用于辅助技术。 span元素的aria-live =“ polite”属性意味着–应该在下一个宽限间隔(例如,当用户停止键入时)宣布该元素内的更新。 通常,aria-live属性指示实时内容中的一段以及应宣布更改的详细程度。 我在项目中将自动完成的口语文本定义为由Handlebars编译JavaScript模板(也可以使用其他任何模板化引擎,例如Hogan )。

Handlebars.compile('{{#unless isEmpty}}{{count}} suggestions available.' +'{{#if withHint}}Top suggestion {{hint}} can be chosen by right arrow or tab key.' +'{{/if}}{{/unless}}')

当用户停止键入内容并显示建议时,屏幕阅读器会读取可用建议的数量和顶部建议。 非常好。

最后但并非最不重要的是测试。 如果尚未安装屏幕阅读器,请安装Google Chrome扩展ChromeVox和Accessibility Developer Tools 。 这些是开发的好工具。 请观看简短的ChromeVox演示和Accessibility Developer Tools演示 。 或者,您也可以尝试使用免费的独立屏幕阅读器NVDA 。 简单尝试一下工具。

翻译自: https://www.javacodegeeks.com/2014/10/wai-aria-support-for-autocomplete-widget.html

spark wai

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/339097.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

快速学习C语言的途径,让你少走弯路!

1标准C语言能干什么&#xff1f;坦白讲&#xff0c;在今天软件已经发展了半个多世纪&#xff0c;单纯的C语言什么都干不了。标准C语言库只提供了一些通用的逻辑运算方法以及字符串处理&#xff0c;当然字符串在C语言看来也是一种操作内存的方法&#xff0c;所以单纯的C什么都做…

计算机基础教育学,计算机基础教育教学改革与创新

计算机基础教育教学改革与创新伴随《国家中长期教育改革和发展规划纲要(2010-2020)》的颁布,我国计算机基础教育进入一个新的发展阶段,对计算机基础教育"面向应用、能力导向、注重素质"指导思想的深入研究和实践是深化计算机基础教育教学改革的切入点。下面是小编搜集…

C语言学习趣事_你不知道的C语言应用

一、引我一直不明白“文人相轻”是什么意思&#xff0c;也许就是说&#xff1a;文人清客之间互相瞧不起的事情吧。但对于我来说&#xff0c;文人相轻就是表示&#xff1a;无知者无畏。无论你的某一方面的语言学的怎么样&#xff0c;怎么样的牛逼&#xff0c;你可以眼光狭窄&…

html打开显示脚本错误,IE浏览器显示脚本错误怎么解决?IE浏览器脚本错误解决方法图文教程介绍...

只要一打开网页&#xff0c;就会弹出一个“当前页面的脚本发生错误”提示框&#xff0c;如下图&#xff0c;不论按“是”或者“否”&#xff0c;当打开其它网页时&#xff0c;又会弹出一个这样的“脚本错误”提示框&#xff0c;这样的问题该如何解决呢。出现这样的情况&#xf…

jenkins 新手入门安装失败_树莓派安装jenkins,安安静静做个持续集成打包机

对于java程序来说&#xff0c;手动发布服务端是耗时和无聊的&#xff0c;jenkins很好地解决了这个问题&#xff0c;闲着也是闲着就在树莓派上装个jenkins帮我们打包发布吧。这次我们需要安装三个软件&#xff1a;jdk&#xff1a;编辑java程序必要的。maven&#xff1a;maven结构…

java开发C编译器:结构体的解析和执行

用java开发C语言编译器结构体是C语言中&#xff0c;最为复杂的原生数据结构&#xff0c;它把多种原生结构结合在一起&#xff0c;形成一个有特点含义的数据结构&#xff0c;要实现一个完整的C语言编译器或解释器&#xff0c;就必须要拥有对结构体的解析能力&#xff0c;本节&am…

mysql查询会话池_用户会话,数据控件和AM池

mysql查询会话池最近&#xff0c;有人问我有关应用程序模块池的有趣问题。 众所周知&#xff0c;AM池包含用户会话引用的应用程序模块实例&#xff0c;这允许会话在后续请求时从池中获取完全相同的AM实例。 如果应用程序中有多个根应用程序模块&#xff0c;则每个模块都将拥有…

vc 控制台添加托盘显示_和硕县塑胶托盘塑料周转筐多少钱、延安塑料物流箱

他们正是利用了消费者的这种心理&#xff0c;往产品里添加一部分碳酸钙等重物质&#xff0c;不仅仅降低了他们的生成成本也极大的提高了产品自身重量&#xff0c;消费者却被蒙在鼓里。物流与采购联合会托盘专业委员会于2002年9月对北京、天津、上海、广州四大城的300余家生产、…

用python画大白_[Python][可视化]matplotlib基础入门

Python包matplotlib画图入门&#xff0c;以折线图为例。 在使用之前&#xff0c;导入matplotlib包&#xff0c;设置中文字体 import matplotlib.pyplot as plt %matplotlib inline plt.rcParams[font.family] [Microsoft YaHei] plt.rcParams[axes.unicode_minus] False PS&a…

C语言和图形界面编程打造——浪漫的表白程序

谁说程序员不浪漫&#xff1f;&#xff1f;&#xff1f;来来来一起打造一个浪漫的表白程序&#xff0c;配上好听的音乐&#xff0c;瞬间高大上。下面&#xff0c;发下代码吧&#xff0c;昨天的愤怒的小鸟推箱子版本的没发&#xff0c;今天发这个&#xff0c;&#xff0c;&#…

ei eo eq什么意思_EI源刊是什么意思

EI源刊是什么意思?EI检索分为两种&#xff0c;一种是会议论文检索&#xff0c;一种是期刊论文检索&#xff0c;这两种检索的价值和地位是不同的&#xff0c;也由此引出了EI源刊的概念&#xff0c;EI检索包括JA类型和CA类型&#xff0c;JA是期刊论文检索&#xff0c;CA是会议论…

onpagefinished等了很久才执行_学了那么多精准引流推广的方法 你知道什么才是最重要的吗...

东哥说引流在朋友圈更新了很多引流的方法和技巧&#xff0c;有一部分微友就私信我&#xff1a;引流是好方法重要还是执行力重要&#xff1f;东哥说引流想要告诉你的是&#xff1a;不管任何方法&#xff0c;都只是“术”的层面&#xff0c;方法没有好坏&#xff0c;只是根据每个…

【C语言入门学习笔记】如何把C语言程序变成可执行文件!

环境在ANSI的任何一种实现中&#xff0c;存在两种不同的环境。翻译环境&#xff1a;在这个环境里&#xff0c;源代码被转换为可执行的机器指令。执行环境&#xff1a;用于实际执行代码。翻译环境组成一个程序的每个源文件通过编译过程分别转成目标代码各个目标文件由链接器捆绑…

idea springboot 发布webservice 发布服务_阿里云发布 Spring Boot 新脚手架,真香

作者 | 良名 阿里巴巴技术专家背景相信很多人都使用过 start.spring.io 来初始化自己的 Spring Boot 工程&#xff0c;这个工具为开发者提供了丰富的可选组件&#xff0c;并且可以选择多种打包方式&#xff0c;大大方便了开发人员的使用。最近&#xff0c;阿里的 Nacos、Senti…

python简单语法_python的基本语法(一)

1.print 打印&#xff1a;print("我是大佬”&#xff09; input("请输入你的名字:") 2.注释 ctrl/ 表示选中多行注释&#xff08;实际上是单行&#xff09; #表示单行注释 """"""三引号表示多行注释 三单引号表示多行注释print(&…

netbeans6.8_NetBeans 8.0的五个新性能提示

netbeans6.8NetBeans 8.0引入了几个新的Java提示 。 尽管有很多与Java Persistence API相关的新提示&#xff0c;但我还是关注Performance类别中的五个新提示。 NetBeans 8.0引入的五个新的“性能提示”是&#xff1a; 已装箱价值的装箱 冗余String.toString&#xff08;&am…

c语言如何把c程序编译成可执行的exe文件

1、编写一段简单的代码&#xff0c;如下图所示&#xff0c;编辑一段简单的输出语句。2、依次点击菜单栏内的编译→组建→执行&#xff0c;确保这段成率可以正确执行。3、从运行结果来看程序正确&#xff0c;没有问题&#xff0c;然后找到exe可执行程序看其是否有闪退现象。4、将…

sql 联合查询_一张图看懂sql运行顺序

​五月天的《干杯》这首歌短短几分钟&#xff0c;将一个人的一整个人生快速地表现出来。从上课爱看漫画的小男孩到精力充沛的高中生&#xff0c;再到走上工作岗位&#xff0c;而后有了下一代&#xff0c;再为下一代操心&#xff0c;最后进入天堂&#xff0c;和亲人们告别。人生…

计算机语言 angela,Angela

Angela(编程语言)语音编辑锁定讨论上传视频本词条缺少概述图&#xff0c;补充相关内容使词条更完整&#xff0c;还能快速升级&#xff0c;赶紧来编辑吧&#xff01;Angela 是一个部分面向问题的编程语言&#xff0c;语法上吸收DELPHI、VB、C、Flash的优点&#xff0c;功能上全面…

websocket wss_使用wss和HTTPS / TLS保护WebSocket的安全

websocket wss这个博客的第50条提示&#xff0c;是的&#xff01; 技术提示&#xff03;49说明了如何使用用户名/密码和Servlet安全机制保护WebSocket的安全。 本技术提示将说明如何在WildFly上使用HTTPS / TLS保护WebSockets。 让我们开始吧&#xff01; 创建一个新的密钥库…