Details
-
Bug
-
Status: Closed
-
Minor
-
Resolution: Fixed
-
1.2.10-core, 1.0.10-core
-
None
-
Windows, JAWS8
Description
JAWS distinguishes between two types of HTML tables:
1. Data tables
2. Layout tables
Data tables should have markup that identify column/row headers (eg. <th> elements with scope="col|row") as well as non-empty summary attributes. JAWS provides special support for navigating to data tables as well as for navigating between cells within data tables.
Layout tables should not contain any row/column header markup and should specify an empty summary attribute. These tables should be completely transparent to screen reader end users since they are only used for layout purposes.
Unfortunately JAWS sometimes gets confused and treats some layout tables as if they are data tables. This is bad, since this adds "noise" to the screen read reader experience - ie. JAWS reports the presence of tables that are not interesting to blind users.
To see this in action, access the following panelFormLayout demo via JAWS:
http://www.irian.at/trinidad-demo/faces/components/panelFormLayout.jspx
To see which tables JAWS considers to be data tables, do the following:
- Hit Insert+F3 to bring up the JAWS "Virtual HTML Featuers" dialog
- Arrow down to the "Tables List" item and hit Enter
- JAWS brings up the "Select a Table" dialog, which lists the data tables.
In the panelFormLayout demo, the only data table in the page is the "Attributes" table. However, JAWS incorrectly reports 4 other layout tables rendered by the panelFormLayout component as being data tables.
A simple technique for forcing JAWS to recognize layout tables is to include the datatable="0" attribute on the HTML table element. This is non-standard attribute that JAWS checks to determine whether a particular HTML table is a data/layout table.
This fix for this bug is to enhance OutputUtils.renderLayoutTableAttributes() to render the datatable="0" attribute when in screen reader mode (ie. when CoreRenderer.isScreenReaderMode() returns true). This will force JAWS to treat any Trinidad-rendered layout tables as layout tables and avoid confusion with data tables.