JAWS: layout tables incorrectly identified as data tables
---------------------------------------------------------
Key: TRINIDAD-1371
URL: https://issues.apache.org/jira/browse/TRINIDAD-1371
Project: MyFaces Trinidad
Issue Type: Bug
Components: Components
Affects Versions: 1.0.10-core, 1.2.10-core
Environment: Windows, JAWS8
Reporter: Andy Schwartz
Priority: Minor
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.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.