web main  - 考虑到网络可访问性

下颚吃了我的桌子

数据表与布局表Vs.

一只大鲨鱼吃一张木桌子屏幕阅读器对待数据表不同于布局表。布局表是不确定的,并被线性阅读作为标准页面内容。但是,数据表将被标识,读取的行数或列数,以及为用户提供的按单元格在表中导航的功能。

虽然表格从未旨在控制布局,但它们通常使用这种方式。问题是,识别表是否用于表格数据或控制布局并不明确的方法。因此,屏幕读者申请启发式方法来确定遇到的表类型。受欢迎的钳口屏幕读者的启发式非常差。

下颚行为

更新:根据此处提供的详细信息,自由的科学报告称,JAWS 11.0.756于2009年12月17日发布的许多问题解决了许多问题,现在占表现表类型中的表格标题的账户。

通常应分配数据表表头(元素)用于所有报头单元格。表中的元素的存在应该是表旨在用于数据的死亡赠品。我看到了在布局表中不恰当地使用的元素的少数实例。但是,Jaws不考虑表格标题或通常用于数据表中的任何其他标记以确定表类型。

相反,jaws假设存在数据表的存在至少2行和2列表中至少有4个单元格的大小为200至16000平方像素之间。16000平方像素并不多 - 默认文本或小200×80像素图像的长句。

此外,Jaws将使用DataTable = True或DataTable = 1属性的表将表视为数据表。由于此属性既不常用也不符合标准,因为这将不会被讨论为问题的可行解决方案,但如果需要,它可以实现为“黑客”。

这种逻辑留下了很大的需求。它导致许多数据表被错误地被视为布局表,即使这些数据表具有适当的标题或其他可访问性标记。同样,布局表也可以被识别为数据表。

例子

考虑以下简单表:

学生年龄段
名称 年龄
弗雷德 31.
8.
注意:乔出生于2月29日闰年,所以他真的比弗雷德年长,尽管他每4年只庆祝他的生日。

这显然是一个数据表。表格标题和标题已提供。但是,在jaws中,此表未作为数据表读取,因为只有3个单元格(左侧列中的那些),其小于16000平方像素(至少在标准分辨率和设置)。最后一个单元格中的文本句子使得该小区和所有其他单元格在该列中超过16000平方像素。导航下表的下颌用户将无法获得额外的辅助功能。

类似地,没有识别出没有标题的下面的简单布局表作为数据表,仅仅因为超过4个单元格在200到16000平方像素之间。

Webaim徽标 Webaim徽标
150x76像素
6KB.
波浪徽标 波浪徽标
76x76像素
4KB.

为了复制这个问题,无论细胞内容如何,​​jaws都仅分析了单元格的渲染大小,这使得开发人员几乎不可能控制下颚行为。这意味着增加他们的字体大小或缩放页面内容的用户更有可能将数据表解释为布局表,因为它们更有可能具有超过16000平方像素的单元格。这尤其涉及,因为具有低视力的钳口用户非常可能具有增大内容。

现在怎么办呢?

咏叹调确实提供了一些帮助。Adding role="presentation" to the table causes it to always be treated as a layout table and adding ARIA role="grid" causes any table to be treated as a data table (note that with JAWS’ updated table detection heuristics, role="grid" is likely not necessary, and it could可能导致混乱)。这是jaws 10+的支持。

屏幕阅读器需要启发式来处理没有考虑可访问性的表,但是没有屏幕阅读器应该这样做曾经用适当的标记标记处理一个表作为布局表只是因为该表中的单元格恰好大。同样,布局表不应被视为数据表,因为没有一个单元格碰巧是大的。希望自由科学将解决这个问题, 虽然这相当不太可能考虑过去对这些问题的响应(更新 - 此问题至少部分地在JAWS 11.0.756中解决)。没有小的开发人员可以对这个问题做些。它们应该继续将数据表标记为可访问性,尽可能地以及远离使用表布局的表格。此外,屏幕阅读器用户可以使用NVDA或者适当处理表格的另一个屏幕阅读器。

评论

  1. Shrirang

    谢谢贾德为帖子。

  2. fastfinge

    作为一个盲人用户,我发现Jaws就像IE6:有些东西绝对需要它(特别是老的应用程序),但在大多数情况下,它不应该被使用。这只是“大白鲨”做错的成千上万件事中的一个小例子。对于web开发人员需要NVDA或其他符合标准的屏幕阅读器,我没有问题。作为盲人,我们无法获得完全的网页可访问性,直到Jaws不再是一个因素。Freedom Scientific已经多次表明,他们对与标准组织合作、遵循标准(web标准或像IAccessible2这样的桌面标准)或以任何有意义的方式帮助开发人员没有兴趣。万博体育官网网址目前,Jaws是阻碍我们实现完全无障碍的最大因素之一。作为用户和关心的开发者,我们需要发起一场类似于在消灭IE6方面取得巨大进展的营销闪电战。只有这样我们才能看到情况有所改善。

  3. 网斧

    伟大的文章,像往常一样!PS:我真的很喜欢标题和图形!

  4. Oihana

    伟大的文章!非常有趣的帖子; D

  5. 马库斯

    大多数讲英语的人,但不知道Techese会绝对不知道你在说什么!你能用英语解释你的牛肉是什么吗?为简单的桌子间隔为什么?铺设和数据表之间有什么区别?自由科学正在赋予这一值得的关注,这绝对没有!

  6. 托马斯洛根

    用role= ' presentation '标记用于布局的表格怎么样?我用这个使JAWS避免阅读内容。我同意其他评论者的看法,即解决这些具体问题是非常困难的。

  7. 迈克摩尔

    谢谢贾里德,这解释了一个我们在没有成功的情况下工作的问题。我会向最初向我发出问题的开发人员转发这篇博客文章。我还会看看我们是否可以使用自由科学打开错误报告,因为这个问题可能会影响我们的案例管理系统。

  8. 杰瑞德史密斯

    我对文章进行了次要更新,以指示角色=“演示文稿”可用于强制下颌将表视为布局表。还有一个角色=“表”,它应该强迫它将表视为数据表,但这不起作用。

  9. GonzaloGonzálezmora

    @Marcus:
    表(表在HTML中,元素及其相关元素)可以用于两个目的:杰瑞德等数据表显示了在这篇文章中,布局,这意味着你使用一个表像网格和位置你的内容在不同的细胞根据你想要显示的地方。这种用法是不好的,开发人员应该使用CSS来处理标记的表示。

    在WebAIM上有一篇文章展示了两种类型的表格:创建可访问表格万博体育官网网址。请记住,尽管布局表可以变得更容易访问,但最好的做法是根本不用它们来实现这个目的(也就是说,只使用它们作为表格数据)万博体育官网网址,而使用CSS。

    我希望这揭示了你的怀疑。

  10. @lynnultsworth.

    一如既往的好文章,杰瑞德。有几个问题:
    *您测试了哪个版本的下巴?JAWS 10拾取了您的数据表,但不准确地将您的布局表标记为数据表。
    *您希望看到哪些启发式钳?单独的标签是不够的,因为太多数据表都不使用它们,并且摘要属性通常用于布局表中。什么启发式是NVDA使用?

  11. 杰瑞德史密斯

    林恩-

    我用下颚测试了10.你的安装识别数据表的事实突出了问题 - 没有一致性。您的分辨率或字体大小可能会导致表格以符合启发式的方式呈现。我没有。

    我认为他们现在拥有的是相当充足的,除了任何带有标题或标题的表应始终被视为数据表。而不是计算小区大小,我认为测量单元格中的文本的长度会更好。

  12. Jeffrey - JDS.

    这就是为什么开发人员需要按照标准编写代码,而不是试图迎合自由科学&在每个版本中都有不同的怪癖。特别是当像思瑞泰克的系统访问和NVDA这样的产品可以免费(或低成本)获得时。例如,血清tek已经证明了自己愿意做出改变并遵循标准&由于他们每周都发布产品更新,这一切都可以相对较快地完成。

    另外,用于布局的表格应该像90年代的框架一样被置于历史的拱顶。我们不应该鼓励或迎合它。

  13. Priti Rohra.

    杰克史密斯的辉煌帖子!

    为了NVDA,它遵循标准并向用户呈现它应该呈现的信息。无论市场统计数据如何,NVDA和SA2GO都将是开发人员测试屏幕阅读器的首选。

    然而,我将概述不可建议依赖于识别数据表的识别数据表,因为许多人尚未开始完全实现aria,应该是寻找标题和属性的结合工作,并寻找aria如果可供使用的话。

  14. 詹姆斯克雷格

    数据表的aria角色实际上是'grid'不是'表'

    http://www.w3.org/tr/wai-aria/rolesapgrid.

  15. 杰瑞德史密斯

    谢谢詹姆斯!我的测试表明,Jaws将用角色=“网格”的表格作为数据表来对待表。这似乎是一个合理的,但对这个问题完全不必要的解决方案。我已经更新了帖子以反映这一点。

  16. 杰瑞德史密斯

    据Freedom Scientific报道,在12月17日发布的JAWS 11.0.756版本中,表标头现在是决定表类型的重要因素。当然,这并不能解决现有JAWS安装的问题。我目前的建议是向可能存在问题的表添加适当的ARIA角色(网格或表示),以确保在JAWS 10+中得到正确的处理。

  17. 唐马克

    在我的情况下,我仍然是此页面上的表格作为数据表。我正在运行11.0.756所以我不确定现在如何更好。我不相信这里的第二桌子应该被视为一张桌子,同意了吗?

  18. 杰瑞德史密斯

    don

    这些更新帮助处理像布局表一样处理的数据表。我不认为更新改变了布局表的行为,有时被当作数据表。幸运的是,这比用户失去导航数据表的能力的问题要小得多。而且,我也不确定他们会做出什么改变来改善这一状况。

  19. Sofia Celic-Li

    伟大的帖子!

    我唯一的评论是回应其他评论,这些评论将NVDA作为可行的屏幕阅读器替代方案。NVDA的想法很棒,但它缺乏一些重要的能力 - 包括数据表函数。NVDA仅开始为Web上的数据表提供支持。

  20. 杰瑞德史密斯

    索菲亚-

    谢谢你的评论。我知道在NVDA中还没有完全的数据表支持,但是很快就会出现。但是,它已经能够正确地检测表的存在,并且能够比JAWS更好地导航表(至少在11.0.756之前)。

  21. Sailesh Panchang

    是的,确实NVDA尚未赶上一点。只有在使用标头ID时,才刚抖动和窗口眼睛似乎在复杂表中的标题。只有下颚支持“范围”属性。在我重复的电子邮件之后,对颌9和10的支持范围已经破裂了,并且自由终于修复了它。然后,当表中有表单控件时,能够有时将其作为表导航。现在,窗口眼不会将其作为数据表中的表单控件的表格视为数据表。向前展望,角色=演示文稿将有助于识别布局表。但是,已经使用了大量的表格,并通过所使用的方式进行表格,并不容易区分从数据表中的布局表而没有一些误报。
    Sailesh

  22. skazka

    我唯一的评论是回应其他评论,这些评论将NVDA作为可行的屏幕阅读器替代方案。NVDA的想法很棒,但它缺乏一些重要的能力 - 包括数据表函数。NVDA仅开始为Web上的数据表提供支持。

  23. 约瑟夫·查普曼

    开发人员仍在使用表格布局的表格非常差。
    aria仅在使用XML MIME类型时才支持aria,这是IE6不支持的吗?

  24. imediasolutions.

    我们真的应该只使用表格数据,而不是用于建立网站布局。我记得早些时候我也用过桌子,但现在如果我仔细想想,那真是个坏习惯。总之,好的文章。

  25. 阿隆手表

    我对文章进行了次要更新,以指示角色=“演示文稿”可用于强制下颌将表视为布局表。还有一个角色=“表”,它应该强迫它将表视为数据表,但这不起作用。