Comments (4)
Here's the other text I wrote up, which says basically the same thing. These should probably be merged.
Some authors create web interfaces using an HTML Canvas or some other direct-drawing API to render an interface instead of using native HTML elements. Currently the only way to make this type of solution accessible is by creating hidden DOM elements for accessibility, either as part of the Canvas fallback content, or just with DOM elements placed behind the visual UI in the Z-order. This is an ugly hack and it's wasteful, as there's a lot of overhead to adding DOM elements to the page - it impacts layout, style resolution, etc.
Instead, it should be possible to create virtual accessibility objects for a portion of a page's accessibility tree.
from aom.
I've invited Giorgio Natili from McGraw Hill to comment on this use case. He's implemented a pretty solid Canvas-based web app using the "Ghost DOM" approach (Giorgio's name for the technique we used to call 'Shadow DOM' before it meant web components). He's starting to hit the boundaries of tedium in that API, and requested a something like this JavaScript-only accessibility controller for Canvas or WebGL.
from aom.
Great! Welcome, Giorgio.
On Thu, Feb 18, 2016 at 11:03 AM James Craig [email protected]
wrote:
I've invited Giorgio Natili from McGraw Hill to comment on this use case.
He's implemented a pretty solid Canvas-based web app using the "ghost DOM"
approach (what we used to call 'shadow DOM' before it meant web
components). He's starting to hit the boundaries of tedium in that API, and
requested a something like this JavaScript-only accessibility controller
for Canvas or WebGL.—
Reply to this email directly or view it on GitHub
#1 (comment).
from aom.
@cookiecrook thanks for inviting me to this discussion! @minorninth thanks! :)
Let me try to recap the main issues we are getting and then guys, let me know if you need further info.
Context
The solution currently adopted in McGraw-Hill Education uses PixiJS to render through web standards an app built with a functional programming language we own.
PixiJS, on its side, uses the canvas to provide the UI and the content through the 2d
or 3d
context (the central feature of our web app is to deliver textbooks to the users).
In both cases, the app navigation and the content are not exposed to any assistive technology.
Implemented Solution
Our web app presents the user interface and the content to assistive technology duplicating the rendered ones into standard HTML tags (aka GhostDom).
The main issues we are encountering are:
- Positioning
When the user navigate through UI elements with keyboard, the web app should clearly highlight the selected element. The actual implementation uses CSS pixel precision positioning to achieve this requirement, and we are encountering some performances degradation while the screen resize. Even more, the code base is starting to be hard to be maintained across different screens and devices. - Content
The content is not correctly exposed to the screen readers. Often, it happens that we are not able to expose it in a linear way. - Hidden Controls
To avoid DOM repainting, the dev team decided to keep most of the elements in the page and then expose them to the assistive technologies.
We are having hard time to expose and hide these elements properly.
Let me know if this is valuable for you and what else I can do to support this group.
from aom.
Related Issues (20)
- Consider user action event for multi-select HOT 2
- Element activation and synthesized events HOT 2
- Content attribute to import/export IDs across shadow boundaries HOT 36
- report associated pointerId for a selectionchange
- Are there any plans to create mappings similar to those in MathML-AAM?
- Confirmation of Action: notification API should be available on elements too HOT 1
- Using serialised AOM as snapshot for UI testing HOT 2
- Clarification of purpose of synthesized keyboard events
- Thoughts on/review of CloseWatcher proposal and relation to synthesized events HOT 8
- Should getComputedAccessibleNode() take a node, instead of an element? HOT 4
- AOM and controlling screen reader HOT 1
- Confirmation of Action: (ariaNotify) general feedback for consideration HOT 7
- update caniuse
- IDL element references attributes names HOT 1
- ARIA element reflection across non-descendant/ancestor shadow roots HOT 28
- Remove ARIA reflection spec in this repo and point to ARIA editor's draft
- Encapsulation-preserving IDL Element reference attributes HOT 10
- Shadow inputs in Form-Associated Custom Elements should be allowed to be hidden from AOM
- Computing the Accessible Backing Node, or a similar test-only interface HOT 28
- RFC: Semantic Delegate "Explainer"
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from aom.