[whatwg] hit regions: limited set of elements for fallback content

Ian Hickson ian at hixie.ch
Mon Feb 17 23:02:42 PST 2014

On Mon, 17 Feb 2014, Dominic Mazzoni wrote:
> On Mon, Feb 17, 2014 at 8:20 PM, Ian Hickson <ian at hixie.ch> wrote:
> > 
> > If there are specific use cases that can't be done given the current 
> > restrictions, please let me know;
> What about <select>?

What about it?

> What about an element with a tabindex and an ARIA role that corresponds 
> to a control?

Can you elaborate?

> Note that there are a few ARIA roles for interactive controls that don't 
> have matching HTML counterparts, like gridcell, menuitem, or spinbutton.

Sure. addHitRegion() supports roles like menuitem this in two ways: If 
you're doing something like a straight-forward menu item, you can just add 
the text and the role directly. If you're doing something more elaborate 
(e.g. a menu with disabled items), you can add appropriate elements (e.g. 
<button>) representing the menu into the <canvas> fallback content, and 
use ARIA roles and properties to override <button>'s defaults.

Once you get to more elaborate compound controls like spin buttons, you 
really shouldn't be using <canvas> in the first place, and so those aren't 
supported (spinbutton in particular would be impossible to correctly 
support in a canvas, since it's a compound control with multiple 
subregions, all corresponding to a single DOM node on the ARIA side).

Simple grids are supported the same way that simple menuitems are 
supported; again, though, once you get to elaborate grids with cells that 
can be marked invalid, marked as having popups, etc, you really shouldn't 
be using <canvas>, so those aren't supported. That's what <table> is for. 
If you want a table with graphics inside, the way to do that is to have a 
<table> with each <td> containing a <canvas>, not a single <canvas>. This 
is relatively important because users really don't want authors 
reimplementing table navigation themselves -- indeed I'm not even sure 
it's technically possible for an author to track the AT focus as the user 
navigates a table using AT commands, so it would be incredibly difficult 
for an author to do a good reimplementation of a grid on canvas.

If there are specific use cases for why you'd want to recreate a table 
using <canvas>, please do describe it. If we need to support this, then we 
should make sure we do a good job (as noted, the current APIs aren't 
sufficient, even if we just make addHitRegion() support pointing to <td> 
elements in the canvas fallback content).

Ian Hickson               U+1047E                )\._.,--....,'``.    fL
http://ln.hixie.ch/       U+263A                /,   _.. \   _\  ;`._ ,.
Things that are impossible just take longer.   `._.-(,_..'--(,_..'`-.;.'

More information about the whatwg mailing list