`

(转)表单显式label和隐式label对屏幕阅读器用户的影响–更新

 
阅读更多
显式label
•也就是说为label元素添加for属性,其属性值与表单控件的id属性值一致。
•重置和提交按钮(<input type="reset"/> 、<input type="submit"/>), 图片按钮(<input type="img"/>)以及脚本按钮 (<button></button>)不用使用显式label,因为它们已经有了隐式标签,如value 和 alt 属性值,button元素的内容。
<label for="firstname">First name:</label><input type="text" name="firstname" id="firstname" tabindex="1" />
隐式label
•根据HTML 4.01 规范, 通过label 元素包裹 表单控件和label文本可创建”隐式label”。
•由于一些浏览器(IE6)不支持隐式label,WCAG2.0不建议使用。
<label>First name: <input type="text" name="firstname" /></label>
另外一种写法,即上面两种方法的结合:
<label for="firstname">First name:
<input type="text" name="firstname" id="firstname" tabindex="1" /></label>
两者的区别

使用屏幕阅读器NVDA和IE9测试发现,屏幕阅读器用户听到的提示内容是不同的:
•显式label写法:“fFirst name: 编辑框 空白(或内容)”
•隐式label写法:“First name: 文本 First name: 编辑框 空白(或内容)”–两种方法一致,不过最后一种写法在所有浏览器下点击label都无法激活表单控件(笔者demo手误,已更改),强烈不推荐这种写法。

可以看出,nvda会重复label文本内容,屏幕阅读器用户更容易理解显式label写法的提示。

查看demo

更新:今日看到 HTML5 Accessibility Chops: form control labeling 一文
(http://www.html5accessibility.com/tests/form-labels.html)
做了同样的测试,作者测试了更多的浏览器和屏幕阅读器,查看测试demo页和结果页,得到了同样的结论:使用for 和 id 并且表单控件不放在label元素内是最健壮的方法。
分享到:
评论

相关推荐

    dll显式链接与隐式链接

    本文将深入探讨DLL的两种主要链接方式:显式链接和隐式链接。 **一、隐式链接** 隐式链接是Windows程序中最常见的链接DLL的方式。当编译器处理源代码时,它会查找所有引用的外部函数和变量,并将其与DLL中的符号...

    Android显式启动与隐式启动Activity的区别介绍

    启动Activity有两种主要方式:显式启动和隐式启动,这两种方式各有特点,适用于不同的场景。 **显式启动(Explicit Intent)** 显式启动是最常见的启动Activity的方式,它明确指定了要启动的Activity类名。在创建...

    隐式调用dll和显式调用dll

    本文将深入探讨两种调用DLL中函数的方法:隐式调用和显式调用,并通过一个名为`TestCallDll`的示例项目进行解释。 **隐式调用DLL** 隐式调用是通过链接器在编译时完成的。当编译器处理源代码时,如果遇到对DLL中...

    Oracle显式游标和隐式游标.doc

    Oracle 显式游标和隐式游标 Oracle 中的游标是 SQL 的一个内存工作区,由系统或用户以变量的形式定义。游标有两种类型:显式游标和隐式游标。显式游标是一种明确声明的游标,需要在声明部分使用 CURSOR 语句来定义...

    C#显式类型与隐式转换

    ### C#中的显式类型与隐式转换 在C#编程语言中,类型转换是非常重要的一个概念,它涉及数据类型的转换以及如何确保程序能够正确处理不同类型的数据。本文将基于提供的内容,详细介绍C#中几种常见的类型转换方法及其...

    0105-极智AI-解读TensorRT显式batch和隐式batch-个人笔记

    0105_极智AI_解读TensorRT显式batch和隐式batch-个人笔记

    显式和隐式、过滤器intent的使用

    本教程主要探讨显式Intent和隐式Intent以及Intent Filter的使用,旨在帮助开发者更好地理解和应用这些概念。 首先,让我们理解显式Intent。显式Intent是一种明确指定接收方的Intent。在创建显式Intent时,我们需要...

    02_显式原型与隐式原型.html

    02_显式原型与隐式原型.html

    双曲型方程-显式与隐式原理及实现

    通过阅读这些文件,我们可以深入理解双曲型方程的数值解法,包括显式和隐式方法的实施细节,以及在Matlab环境中的实际编程实践。此外,结合参考书籍《偏微分方程数值解》,可以进一步探讨各种算法的优缺点,以及如何...

    abaqus显示和隐式算法的差别.pdf

    abaqus 显示和隐式算法的差别 在有限元分析中,求解动力学振动响应是非常重要的一步。abaqus 是一种常用的有限元分析软件,提供了多种算法来解决这个问题。其中,中心差分法(显式)和 Newmark 法(隐式)是两种...

    activity显式隐式跳转

    在Android应用开发中,...总之,掌握Activity的显式和隐式跳转对于Android开发者来说至关重要,它们是构建用户体验流畅、功能丰富的应用程序的基础。通过深入学习和实践,你可以更熟练地运用这些知识来打造你的应用。

    【GAMES101】作业8 显式/半隐式欧拉与Verlet方法模拟绳子运动

    在本作业中,我们将探讨如何使用显式欧拉、半隐式欧拉和Verlet方法来模拟绳子的运动。这些方法是计算机图形学中常用的动力学模拟技术,特别是在游戏开发和物理仿真中。让我们深入了解一下这三个算法以及它们在C++...

    SQL Server数据库P166 (3)ROLLBACK TRANSACTION将显式事务或隐式事务回滚到事务的结束.sql

    内容概述:SQL Server数据库相关内容,对应张磊著《SQL Server数据库应用技术项目化教程》中166页(3)ROLLBACK TRANSACTION将显式事务或隐式事务回滚到事务的结束所对应的源码。代码经个人运行后无误,如果下载后运行...

    c语言编写阿当姆斯显式与隐式

    这个程序展示了如何使用阿当姆斯显式方法和隐式方法来近似求解一阶线性常微分方程。阿当姆斯方法是基于多项式插值和加权平均的思想,通过已知的函数值来预测未来的值。这里,我们重点讨论程序中的关键部分及其所涉及...

    动态链接库DLL的(隐式和显式)的创建和使用

    这有助于加深对隐式和显式链接的理解。 总之,动态链接库DLL是C++编程中的重要技术,掌握其创建和使用能提高软件的可维护性和扩展性。通过实践和文档学习,开发者能够灵活运用DLL,提高程序设计的效率。

    LS-DYNA显示—隐式求解步骤

    在LS-DYNA中操作显示和隐式求解步骤通常需要用户具备一定的前处理能力,如定义材料属性、几何模型、边界条件、加载历史、选择适当的求解器参数等。用户需要通过LS-DYNA提供的用户界面进行一系列设置,包括实体类型的...

    BookCrossing数据集(包含278858个用户对271379本书进行的评分,包括显式和隐式的评分。本数据集主要包含2中文件格式,sql和csv)

    这个数据集包含了来自全球278858位独特的读者对271379本不同书籍的评分,涵盖了显式和隐式的反馈,使得分析更加全面深入。今天,我们将深入探讨这个数据集的重要性和它所蕴含的潜在价值。 首先,让我们理解数据集的...

    基于javascript 显式转换与隐式转换(详解)

    对于数据类型转换,JavaScript提供了显式转换和隐式转换两种方法,它们各自有不同的应用场景和规则。 ### 显式转换(Explicit Conversion) 显式转换是指开发者明确地使用特定的函数或方法来转换变量的数据类型。...

Global site tag (gtag.js) - Google Analytics