- From: Joe D Williams <joedwil@earthlink.net>
- Date: Thu, 21 Jan 2010 11:35:02 -0800
- To: "James Craig" <jcraig@apple.com>, "Richard Schwerdtfeger" <schwer@us.ibm.com>
- Cc: "Ian Hickson" <ian@hixie.ch>, <public-canvas-api@w3.org>, "HTML WG" <public-html@w3.org>
> Regarding fallback content ...
Please continue with the term fallback as used in html for a long
time. The term is described in detail with <object> as meaning the
child html that is exposed when the browser can't do anything
constructive with the parent. In the most simple case we could see:
<object type='model/x3d+xml' data='scene.x3d'>
<table>... </table>
</object>
where if the browser doesn't do the mime then the html table is shown.
This can be extended to:
<object type='model/x3d+xml' data='scene.x3d'>
<img src='mepic.png' />
<table>... </table>
</object>
where using authorable progressive fallback the table is exposed only
if both <object> and <img> fail.
Seeing the form:
<canvas width="800" height="450"></canvas>
makes it seem obvious that any 'fallback' content would go as html
between the tags, the way it is done in <object>. Except for the fact
that <canvas> is universal and support will always be there no matter
what so that construct:
<canvas width="800" height="450"></canvas>
<table>... </table>
</canvas>
where table is rendered if the browser doesn't do canvas is really not
considered that I have seen.
Accessibility for 2D <canvas> is tougher than for other HTML or SVG or
X3D which have built-in event systems and a scriptable DOM. The 2D
context is not live in the sense of being updated constantly each
frame. This tends to limit the scale of interactivity to mostly simple
stuff. We are now seeing the deep versatility of <canvas> where the
x3dom.org project is showing the <canvas> element capable of using x3d
and svg and img and video and audio user code to directly produce an
interactive <canvas> element. Also shown, and maybe even more fun,
using html5 xhtml+xml inline user code with X3D and SVG syntax for
that same purpose. Since svg and x3d are xml dom and can accomodate
xml ARIA interactive elements these can be treated by aria in the same
way as other html content.
Thus, the most basic 2D canvas getContext('2d') makes it necessary to
extend the idea of accessibility to normal people trying to click one
shape vs another in a <canvas> frame. The desire is to provide a
dynamic, interactive user interface that operates as expected by a
user expecting focusable/clickable areas. Somehow we need to produce
interactive elements from an abstract dynamic procedural graphless
visualisation created from a script that is long gone and has left no
traceable trace, except a bitmap. Since a more traditional IMG MAP and
AREA overlay is not desired we create a 'shadow' dom. If this dom is
done right, then ARIA can fit right in.
In any case, in my simple view, this is almost not part of the
accessibility opportunity, but basic engineering to get <canvas>
context2D elements working as if there was a native dom context
selectable graph to play with, which there is not. So, this part of
canvas design is not fallback. Instead, this defines a basic
connection model to the host DOM as if directly from the internal
context of the 2D <canvas>. To me, it follows that if we can produce a
reasonable top-level accessibiity dom, then the rest is easily
accomodated by xml aria.
When I first saw suggestions in this thread I thought, Great, a
standard container for non-rendered accessibility information. I
wanted to start calling it <access> as the top layer of accessibility
information available for the object or canvas, or whatever else that
needs it. So, or instance, a canvas element could be;
<canvas ...>
<access> whatever non-rendered html accessibility model could go here
with ARIA markup?</access>
</canvas>
Where <access> is never rendered, but <access> dom nodes associated
with the object are created and can be accessed by DOM script
document.canvas.access.node.attr.value in all cases.
I think the only available place for this 'access' dom is as an
never-rendered element named <access> which can be included in
<canvas>, <object>, <embed>, <iframe>, <video>, and any container that
could use the hints provided in this 'shadow' dom to enhance
accessibility or interactivity of the frame. In elements other than
<canvas> context 2D this element could serve as a top-level container
for a model for interactivity of the 2D screen surface exposed to the
user. One aspect could be essentially adding some level of interface
information as a live overlay to the visual frame and providing some
top-level elements for aria annotation.
The only other reasonable location for this information would be an
@access='url' attribute that held a link to this abstract model for
<canvas> context2D accessibilty.
Thanks for the opportunity to discuss this and Best Regards,
Joe
.
Received on Thursday, 21 January 2010 19:35:43 UTC