RFR: 8325690: The scrollable element <div> with non-interactive content is not tabbable [v40]

Hannes Wallnöfer hannesw at openjdk.org
Tue Aug 13 14:19:54 UTC 2024


On Mon, 24 Jun 2024 06:50:24 GMT, psoujany <duke at openjdk.org> wrote:

>> The scrollable element `<div>` with non-interactive content is not tabbable. Grid columns in the javadoc stylesheet has overflow: auto, which is failing Accessibility checks.
>> https://bugs.openjdk.org/browse/JDK-8325690
>
> psoujany has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Add tabindex to all rows of table

I still find various problems mostly in the ARIA related attributes introduced in this PR. Since the original issue is to make table cells tabbable, a solution might be to exclude these changes from this PR and create a new JBS issue for them. The alternative solution would be to get the ARIA-related changes right, but that will require some more work.

src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/Table.java line 397:

> 395:             }
> 396:             table.put(HtmlAttr.ROLE, "table")
> 397:                  .put(HtmlAttr.ARIA_LABEL, tableStyle.cssName());

The CSS name is an CSS class name and not an appropriate label to describe the table element. I think the caption/label set in the `if-else`-statement above would be the proper value for this attribute.

src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/Table.java line 407:

> 405:             HtmlId defaultTabId = HtmlIds.forTab(id, 0);
> 406:             table.put(HtmlAttr.ROLE, "table")
> 407:                  .put(HtmlAttr.ARIA_LABELLEDBY, defaultTabId.name());

I note that the `aria-labelledby` attribute is already set to the same value on the tab-panel element which contains the table (by code further down in this method). That attribute is also updated dynamically by the code in `script.js` when switching to a different tab. Since the tab-panel is the immediate parent of the table element, and the table its only child, is it actualy necessary to set attribute in both elements?

-------------

Changes requested by hannesw (Reviewer).

PR Review: https://git.openjdk.org/jdk/pull/17819#pullrequestreview-2235557269
PR Review Comment: https://git.openjdk.org/jdk/pull/17819#discussion_r1715297280
PR Review Comment: https://git.openjdk.org/jdk/pull/17819#discussion_r1715370788


More information about the javadoc-dev mailing list