Uploaded image for project: 'MyFaces Trinidad'
  1. MyFaces Trinidad
  2. TRINIDAD-1371

JAWS: layout tables incorrectly identified as data tables

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Minor
    • Resolution: Fixed
    • 1.2.10-core, 1.0.10-core
    • 1.0.11-core, 1.2.11-core
    • Components
    • 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.

      Attachments

        1. jira1371_for_Trinidad_trunk_1.0.x.patch
          529 kB
          Dave Robinson
        2. jira1371_for_Trinidad_trunk_1.2.x.patch
          529 kB
          Dave Robinson

        Activity

          People

            darkarena Scott O'Bryan
            andy.schwartz Andy Schwartz
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: