- From: James Craig <jcraig@apple.com>
- Date: Fri, 30 Nov 2012 14:41:36 -0800
- To: HTML Accessibility Task Force <public-html-a11y@w3.org>
- Cc: Steve Faulkner <faulkner.steve@gmail.com>
Despite the <main> element extension specification being approved "with no objections and ample support" by the HTML Working Group [1], some arguments have been resurrected on a few lists recently, including webkit-dev [2]. While I don't share Ian's concern that misuse or misunderstanding of the element will make <main> "pointless", he has a valid concern that there is some potential for incorrect use. I personally feel that the penalty for such misuse is negligible [3], but we should do everything we can to avoid misunderstanding and warn authors about misuse, so I'm proposing a heuristic to trigger author validation warning upon detection of probable misuse, thereby making the spec for <main> a little bit stronger, and address the primary case that I believe is the cause of Ian's concern. I'll begin by defining what I consider "misuse" of the <main> element. I'd consider it misuse of <main> to be used as a direct replacement for a wrapper element (like <div id="body">) that contains all standard page contents, including the navigation and footer, in addition to the actual primary content or 'main' content. Misuse Example: <body> <main> <header></header> <nav> … </nav> <div id="primarycontent"> this is the real 'main' content </div> <footer> … </footer> </main> <!-- with possibly some appended dialogs or panels out here --> </body> However, there are some times when it would be valid to use <main> as the wrapper element with no other programmatically discernible landmarks. Valid uses of <main> Example 1, with no other discernible landmarks: <body> <!-- example: this may be iframe contents --> <main> this is the real 'main' content </main> </body> <body> <main> this is the real 'main' content </main> <!-- not a misuse of main, despite the follow misuse of footer --> <div id="footer"> … </div> <!-- this should be a footer element, but that info is not programmatically determinable --> </body> Likewise, there are times when it's valid to nest landmarks, so we should not trigger a warning for something as simple as a <nav> element inside <main>: Valid use of <main> Example 2, with nested landmarks: <body> <header></header> <nav> … </nav> <main> <div id="primarycontent"> this is the real 'main' content </div> <nav> secondary navigation inside main </nav> </main> <footer> … </footer> </body> I think, however, we can safely trigger a warning for the error case mentioned above, because there are no discernible landmarks outside main element, but there are one or more discernible landmarks inside main. Misuse Example: <body> <!-- no discernible landmarks outside main --> <main> <!-- but multiple discernible landmarks inside main --> <header></header> <nav> … </nav> <div id="primarycontent"> this is the real 'main' content </div> <footer> … </footer> </main> </body> Explicit ARIA landmarks outside the main element should probably also prevent the heuristic from triggering a warning: Valid use example for main (misuse of header/footer though): <body> <div id="header" role="banner"> … </div> <!-- bypasses the warning because of the explicit aria landmark role outside main --> <main> <nav> … </nav> <div id="primarycontent"> this is the real 'main' content </div> </main> <div id="footer" role="contentinfo"> … </div> <!-- bypasses the warning because of the explicit aria landmark role outside main --> </body> I have not yet proposed any specific wording for what will probably end up as an RFC-2119 author "SHOULD NOT" requirement, because it deserves more discussion first. Thoughts? James 1. HTML WG Approval of <main> extension spec: http://lists.w3.org/Archives/Public/public-html/2012Nov/0232.html 2. Webkit dev thread: http://lists.webkit.org/pipermail/webkit-dev/2012-November/023013.html 3. The penalty for misuse of <main>, with regards to landmark navigation, is about the same penalty that users pay when authors hierarchically structure headings incorrectly. (e.g. h1, then h3, without an h2 in between). Multiple non-linear navigation mechanisms still work, but there is a minor loss of clarity in a screen reader user's ability to grok the page structure at a high level. In my opinion, this cost is relatively trivial compared to the potential wins we get by adding the accessible landmark role to the default semantics of the <main> element when used correctly.
Received on Friday, 30 November 2012 22:42:07 UTC