- From: Daniel Trebbien <dtrebbien@gmail.com>
- Date: Fri, 26 Sep 2014 16:46:56 -0400
- To: "Tab Atkins Jr." <jackalmage@gmail.com>
- Cc: WHATWG <whatwg@whatwg.org>
On Fri, Sep 26, 2014 at 3:01 PM, Tab Atkins Jr. <jackalmage@gmail.com> wrote: > On Fri, Sep 26, 2014 at 11:39 AM, Daniel Trebbien <dtrebbien@gmail.com> > wrote: > > On Fri, Sep 26, 2014 at 2:09 PM, Anne van Kesteren <annevk@annevk.nl> > wrote: > >> On Fri, Sep 26, 2014 at 7:59 PM, Daniel Trebbien <dtrebbien@gmail.com> > >> wrote: > >> > One issue is that the ARIA semantics for "implied rows" are not > defined. > >> > >> I'm not sure I understand why ARIA would come into play at all when it > >> comes to tables. Weren't tables "accessible" (I realize it has always > >> been somewhat hard to convey them properly) long before ARIA existed? > >> > > > > The issue is that, as far as I can tell, HTML 4.01 does not support > > "implied rows": > > http://www.w3.org/TR/html401/struct/tables.html > > This is new to HTML5. > > No, HTML4 supported this; it probably didn't actually have any > normative text around it, but browsers certainly supported having a > rowspan go past the end of the explicit rows. > That's true. Browsers supported this. What I mean is that HTML4 didn't have normative specification of this, but HTML5 does. I guess what I wanted to clarify is that when a browser exposes a table to the operating system's accessibility layer which screen readers use to announce the content of a web page, the model of the table in the accessibility layer should match the HTML5 table model. Using the Accessibility Inspector tool on Mac and the Inspect tool on Windows, I am seeing that browsers are currently not exposing the implied rows. Chrome, Firefox, Safari, and Internet Explorer are only exposing 6 rows for the example. Using the example table HTML in Chrome for Mac, Chrome is not exposing to Mac's accessibility hierarchy the 15 rows of the table, but only 6 rows; there are only 6 "AXRow" children of the "AXTable". With Accessibility Inspector I see that the "AXCell" corresponding to the first cell in the first row has the AXColumnIndexRange attribute set to loc=0, len=3 and the AXRowIndexRange attribute set to loc=0, len=10 (which are correct). However, when I navigate to the "Row 11, Column 1" cell, VoiceOver announces "row 2 of 6 Row 11, Column 1". If I modify the example HTML to insert empty TR elements for each of the 9 implied rows: <table id="theTable" border="1"> <tbody> <tr> <td rowspan="10" colspan="3">These are the first 10 rows.</td> </tr> <tr></tr> <tr></tr> <tr></tr> <tr></tr> <tr></tr> <tr></tr> <tr></tr> <tr></tr> <tr></tr> </tbody> <tbody> <tr> <td>Row 11, Column 1</td> <td>Row 11, Column 2</td> <td>Row 11, Column 3</td> </tr> <tr> <td>Row 12, Column 1</td> <td>Row 12, Column 2</td> <td>Row 12, Column 3</td> </tr> <tr> <td>Row 13, Column 1</td> <td>Row 13, Column 2</td> <td>Row 13, Column 3</td> </tr> <tr> <td>Row 14, Column 1</td> <td>Row 14, Column 2</td> <td>Row 14, Column 3</td> </tr> <tr> <td>Row 15, Column 1</td> <td>Row 15, Column 2</td> <td>Row 15, Column 3</td> </tr> </tbody> </table> .. then when I navigate to the "Row 11, Column 1" cell, VoiceOver announces "row 11 of 15 Row 11, Column 1". Also, Chrome then exposes 15 "AXRow" children of the "AXTable". Using the original example in Internet Explorer 11, IE11 is exposing only 6 rows like Chrome, Safari, and Firefox; with the Windows SDK Inspect tool, I see that the UIA_TableControlTypeId has the Grid.RowCount attribute set to 6. Switching on Narrator, when I navigate to the "Row 11, Column 1" cell, Narrator announces "Row 11, Column 1. Column 1 row 2 item". Using the modified HTML containing the 9 empty TR elements, the Grid.RowCount attribute is set to 15 and Narrator will announce "Row 11, Column 1. Column 1 row 11 item" for the "Row 11, Column 1" cell. I am fairly certain that the model of the table that browsers expose to the accessibility layer should match the HTML5 table model, but I wanted to confirm. Also, I wanted to ask what the ARIA semantics of the implied rows are. For example, suppose I have this (admittedly contrived): <table border="1"> <tbody> <tr aria-selected="true" role="row"> <td rowspan="5">Spans 5</td> <td> </td> <td> </td> <td> </td> </tr> <tr aria-disabled="true" role="presentation"> <td rowspan="4">Spans 4</td> <td> </td> <td> </td> </tr> <tr aria-hidden="true" role="row"> <td rowspan="3">Spans 3</td> <td> </td> </tr> <tr aria-busy="true" role="presentation"> <td rowspan="2">Spans 2</td> </tr> </tbody> </table> There is 1 implied row in this example, but what are the ARIA state attributes of this implied row? Is it selected and/or disabled and/or hidden and/or busy? What is the implied row's role? There should probably be a requirement that ARIA roles and state should be consistent.
Received on Friday, 26 September 2014 20:47:20 UTC