-
Notifications
You must be signed in to change notification settings - Fork 233
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
TD with SCOPE passes test, but is obsolete in HTML 5 #127
Comments
Perhaps we should revisit the whole issue using scope at all in any techniques ... I've almost never seen it add value in modern browsers and AT. Seems AT has figured out what to do with to figure out the scope themselves. |
scope works in JAWS 13 thru 16 and Window-Eyes 9+, but not in NVDA or VoiceOver: JAWS 15 onwards can repair the H63 example when scope is missing, but other screen readers can't: The TD headers attribute is marginally better supported, but much harder to code correctly: Would lobbying two AT vendors to support scope be easier than changing the table markup used on millions of pages? Both NVDA and VoiceOver auto update so interop with old versions is much less of a concern. |
That's not entirely correct. Here's the situation for NVDA. For IE/MSHTML, we scour the DOM like every other AT, so we have to implement scope ourselves. The way it is currently implemented, a scope="row" header is associated correctly for cells after the row header (i.e. column 3 and after), but not before. So, if you move to column 3 and then move down by row, you'll notice the row headers do get read correctly. Also, note that we currently only implement scope for th, not td. For Firefox/Mozilla, we use accessibility APIs, which means Firefox is responsible for giving us table info (including headers). It seems they've made the same assumption; i.e. a scope="row" header is associated for cells after the header, but not before. For Chrome/Chromium/Edge, we also use accessibility APIs, but I don't know what they implement and what they don't regarding header scope. Regarding the association of scope="row" headers before the cursor, we definitely never want to associate a row header with itself; i.e. row 2 column 2 shouldn't have row 2 column 2 as a row header. There's probably a good argument for associating it for cells before (column 1 in this example), though. |
Thanks @jcsteh for the information. In your view are there cases where if a plain TH is provided that the headings are not correctly identified and having scope assigned makes the difference? I'm not sure whether the browser does the guessing for what cell is the header for the data cells or if NVDA does some work to try to figure it out. |
This failure is still useful for legacy websites/applications. We could update the failures test procedure to state:
The rest of the procedure would still be fine. Would that do it? |
Hi Joshue I’ve been looking at how the NVDA / Firefox / WebKit / Blink accessibility API layers calculate table headers, and how SCOPE affects this. I’m hoping to write up the behaviour this weekend and post it to the GitHub issue. There’s not much agreement on the table header calculation between implementations, so that’s probably going to have a bearing on resolving this. Is it possible to hold off deciding this till I’ve written up the behaviour? Cheers Mark Rogers - mark.rogers@powermapper.com From: joshueoconnor [mailto:notifications@github.com] This failure is still useful for legacy websites/applications. We could update the failures test procedure to state:
The rest of the procedure would still be fine. Would that do it? — |
@dd8 No problem Mark - that's great. I look forward to hearing your feedback. |
I've done a fair bit of investigation of the code supporting SCOPE and table cell header calculations. It turns out to be quite complex, with limited interop between implementations (partly as a result of a spec issue - see below). http://www.powermapper.com/blog/table-headers-and-scope/
I only looked at implementations with public source code, so not JAWS or WindowEyes. PS @jcsteh - I've tried to document the NVDA with MSAA behaviour as simply as possible, but please correct me if I got anything wrong. |
Mark, this is a huge help. I'll have to digest it more but it is great to have the data to work off of. Thanks! |
Preparing to mark as deferred due to inactivity and group resource constraints (https://www.w3.org/WAI/GL/wiki/Handling_Issues). |
Item Number: F91
Part of Item: Tests
Comment Type: technical
Summary of Issue: TD with SCOPE passes test, but is obsolete in HTML 5
Comment (Including rationale for any proposed change):
HTML 5 obsoleted TD SCOPE attribute, and says use TH SCOPE instead:
http://www.w3.org/TR/html-markup/td.html
Some common AT ignores scope, so treat this as a plain TD:
http://www.powermapper.com/tests/screen-readers/tables/table-th-scope/
Using TD SCOPE in HTML 5 triggers the following error in the W3 validator
The scope attribute on the td element is obsolete. Use the scope attribute on a th element instead.
Proposed Change:
Remove
5. headers marked up as td elements with the scope attribute
The text was updated successfully, but these errors were encountered: