a11y y Lienzos Interactivos

This ad is not shown to multipass and full ticket holders
JSNation US
JSNation US 2025
November 17 - 20, 2025
New York, US & Online
JS stars in the US biggest planetarium
Learn More
In partnership with Focus Reactive
Upcoming event
JSNation US 2025
JSNation US 2025
November 17 - 20, 2025. New York, US & Online
Learn more
Bookmark
Rate this content

¿Pensando en usar <canvas> para renderizar tu UI? ¡Buena idea! Pero hagámoslo accesible. Aprende cómo aprovechar la estructura del árbol DOM para permitir a los usuarios interactuar con tu canvas usando el teclado y un lector de pantalla. Descubre las trampas complicadas y cómo sortearlas.

This talk has been presented at JSNation 2025, check out the latest edition of this JavaScript Conference.

Oli Legat
Oli Legat
28 min
12 Jun, 2025

Comments

Sign in or register to post your comment.
Video Summary and Transcription
La charla de Oli profundiza en la importancia de la accesibilidad y los lienzos interactivos, comparando la renderización de SVG y canvas para componentes de gráficos. La discusión incluye mejorar los elementos SVG con atributos ARIA para una mejor interpretación por parte de los lectores de pantalla, implementar un canvas accesible usando elementos proxy y mostrar elementos interactivos con visibilidad de enfoque. La charla también explora indicadores de enfoque dinámico, integración de IA para lectores de pantalla y la optimización de canvas sobre SVG para el rendimiento. Se discuten consideraciones para pruebas de accesibilidad en la UE, APIs directas de lectores de pantalla y conversión de imagen a voz usando TransformersJS.
Available in English: a11y & Interactive Canvases

1. Accessibility and Interactive Canvases

Short description:

La charla de Oli cubre la accesibilidad, los lienzos interactivos y el componente de gráficos de AG Grid utilizando el lienzo HTML5 en lugar de SVG. Se discuten los pros y los contras del renderizado SVG y del lienzo.

Gracias a todos por venir hoy a ver mi charla sobre accesibilidad y lienzos interactivos. Así que, una introducción muy rápida. Mi nombre es Oli. Soy un exdesarrollador de juegos. He trabajado con LarCraft y Sonic the Hedgehog en el pasado. Gente estupenda, por cierto. Los amo. Gente agradable. Y ahora, trabajo en una empresa de la que quizás hayan oído hablar llamada AG Grid, y trabajo en el equipo que hace el componente de gráficos.

Así que aquí, este es básicamente nuestro sitio web. Les mostraré rápidamente qué es para que todos estemos en la misma página. Así que esencialmente, sí, es una biblioteca agnóstica de frameworks para dibujar gráficos, como gráficos de barras como este. También podemos dibujar gráficos financieros. También tenemos algunos gráficos de mapas aquí. Todos los diferentes tipos de gráficos. Una de las características clave de nuestra biblioteca es que se renderiza usando un lienzo HTML5 en lugar de un SVG, que es lo que la mayoría de las otras bibliotecas de gráficos utilizan. Hay algunas excepciones.

Así que como pueden ver, como esta barra de herramientas aquí, esos son solo botones regulares de HTML5. Pero específicamente para esta charla, me voy a centrar en la parte de renderizado de lienzo de AG charts. Así que el espacio de problemas con el que estamos lidiando es cuando estás renderizando un gráfico, la gran pregunta es, ¿debería usar una imagen SVG o debería usar un lienzo? Estoy seguro de que la mayoría de ustedes ya están familiarizados con el concepto de estos dos, pero solo para asegurarme de que todos entiendan, repasemos rápidamente los pros y los contras. Así que una ventaja del SVG es que, básicamente, es un sistema de renderizado basado en vectores. Es renderizado por tu motor de diseño, como Chrome o Safari. Y tiene una jerarquía XML donde todas las formas y todo están definidas por algunas etiquetas XML. El lienzo, por otro lado, es solo un único elemento HTML. El desarrollador de JavaScript es responsable de escribir toda la lógica de renderizado para realmente dibujar el código. Y así no tienes una jerarquía. Solo tienes ese único elemento. Los dos son básicamente muy, muy similares entre sí. Así que como pueden ver, estas dos imágenes, son exactamente la misma imagen. Una de ellas es renderizada por un SVG donde dices, OK, quiero un círculo aquí, quiero un rectángulo aquí, y quiero un polígono.

2. SVG Attributes and Accessibility

Short description:

SVG permite atributos adicionales para lectores de pantalla, a diferencia del canvas. Los atributos ARIA mejoran la accesibilidad para elementos SVG, permitiendo una interpretación más fácil por parte de los lectores de pantalla.

Lo mismo aquí con el canvas, pero está escrito en JavaScript en lugar de XML donde quiero un círculo, un rectángulo, un triángulo, y así sucesivamente. Y así, la principal ventaja de un SVG es que, porque tienes estas etiquetas XML dentro de tu DOM, básicamente puedes, como voy a mostrarte aquí mismo, si inspeccionas aquí, puedes establecer algunos atributos adicionales en los elementos. Así que para aquellos que no están familiarizados, existe este concepto llamado ARIA donde básicamente puedes decir, por ejemplo, raw button. Esto le dirá al lector de pantalla que trate este elemento como si fuera un botón regular.

Y vamos a intentar ver qué pasa ahora si activamos el lector de pantalla. VoiceOver en Safari. Comparación. Botón. Menor que. Botón. Tres elementos. Botón. Botón. Botón. Actualmente estás silenciado. Así que como puedes ver, porque ahora he establecido esas reglas en esos atributos XML, el lector de pantalla puede captarlo y dice, OK, estas formas son en realidad botones, así que simplemente los trataré como botones. Luego tienes que añadir otros controladores como el manejo de entrada de teclado y ratón. Pero básicamente puedes decirle al lector de pantalla, sí, estos son los botones.

No podemos hacer eso con el canvas porque es solo ese único elemento. Entonces, ¿cómo lo solucioné? Bueno, básicamente, la solución que encontré fue simplemente ocultar el canvas. Bueno, no ocultarlo completamente, obviamente. Todavía lo dibujamos en la pantalla. Pero hay un atributo llamado area hidden. Lo configuramos en true para decirle al lector de pantalla, simplemente no prestes atención a este canvas. Nada importante aquí. Y luego lo que tenemos es este concepto llamado elementos proxy. Y eso es esencialmente solo algunos elementos HTML sobre el canvas, pero tienen un fondo transparente Básicamente, no están dibujados. Están ahí en el árbol. Están ahí en el DOM.

QnA

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Accesibilidad en Discord
React Advanced 2021React Advanced 2021
22 min
Accesibilidad en Discord
This Talk discusses the accessibility efforts at Discord, focusing on keyboard navigation and the challenges faced with implementing focus rings and outlines. The speaker showcases a unified focus ring system and a saturation slider to address accessibility concerns. They also highlight the implementation of role colors and the use of CSS filters for accessibility improvements. The Talk concludes with insights on runtime accessibility checking and the development of a performant core runtime system for checking accessibility issues.
Configurando las Pruebas de Accesibilidad de Axe
TestJS Summit 2021TestJS Summit 2021
30 min
Configurando las Pruebas de Accesibilidad de Axe
Top Content
AXe is an accessibility engine for automated web UI testing that runs a set of rules to test for accessibility problems. It can be configured to disable or enable specific rules and run based on tags. Axe provides various options, but axe linter does not support all options. The importance of investing time and resources in accessibility is emphasized, as it benefits not only those with disabilities but improves the web for everyone. Manual testing is also highlighted as a necessary complement to automated tests for addressing accessibility issues.
Elementos Interactivos Anidados: Una Pesadilla en Accesibilidad
React Advanced 2023React Advanced 2023
23 min
Elementos Interactivos Anidados: Una Pesadilla en Accesibilidad
Top Content
Nested interactive elements can cause accessibility issues on websites, and the speaker shares a personal experience with an accessibility bug involving a list component. Mitigating nested interactive structures involves limiting these patterns during development and restructuring existing elements. The speaker provides recommendations for improving accessibility, such as adjusting role properties and gathering user feedback. The conclusion emphasizes the importance of accessible solutions and encourages sharing resources to build more inclusive experiences.
Dilemas de los diálogos y travesuras modales: Un análisis profundo de las ventanas emergentes
JSNation 2023JSNation 2023
10 min
Dilemas de los diálogos y travesuras modales: Un análisis profundo de las ventanas emergentes
The Talk discusses the use of dialogues and popovers in web development. Dialogues can be modal or non-modal and are now accessibility-supported. Popovers are versatile and can be added to any element without JavaScript. They provide suggestions, pickers, teaching UI, list boxes, and action menus. Modal and non-modal dialogues and popovers have different behaviors and dismissal methods. Browser support for these features is expanding, but there are still open questions about positioning, semantics, and other use cases.
Construyendo un Sitio Web Rápido para Cada Visitante
React Advanced 2024React Advanced 2024
31 min
Construyendo un Sitio Web Rápido para Cada Visitante
This talk focuses on building a fast and accessible website for all users, highlighting the importance of performance and user experience optimization. It emphasizes the need for adaptive implementation to cater to different devices and user conditions. The talk also discusses the factors beyond the developer's control, such as screen size, browsers, devices, internet connection, and sitting position. It highlights the significance of optimizing image components for various devices and the role of browser support and rendering engines. The speaker discusses the use of future APIs and the challenges of browser compatibility, as well as optimizing image formats and bundler compatibility. The talk provides insights on controlling bundler and device compatibility, optimizing CPU usage, internet connection, and JavaScript form submission. It concludes with a proposal to respond with save data instead of effective type for limited internet connections and recommends using React with adaptive hooks for better user experiences. Overall, the talk covers essential aspects of building a fast and accessible website.
a11y y TDD: Una Combinación Perfecta
JSNation 2022JSNation 2022
24 min
a11y y TDD: Una Combinación Perfecta
This Talk explores the intersection of accessibility and test-driven development (TDD) in software development. TDD is a process that involves writing tests before writing production code, providing a safety net for code changes. The Talk demonstrates how to apply TDD principles to real-life examples, such as filling out a form, and emphasizes the importance of user-centric testing. By using atomic design principles, code can be organized in a clean and easy way. The Talk also discusses the use of labels and test IDs in tests for improved accessibility.

Workshops on related topic

Accesibilidad web para Ninjas: Un enfoque práctico para crear aplicaciones web accesibles
React Summit 2023React Summit 2023
109 min
Accesibilidad web para Ninjas: Un enfoque práctico para crear aplicaciones web accesibles
Workshop
Asaf Shochet Avida
Eitan Noy
2 authors
En este masterclass práctico, te proporcionaremos las herramientas y técnicas que necesitas para crear aplicaciones web accesibles. Exploraremos los principios del diseño inclusivo y aprenderemos cómo probar nuestros sitios web utilizando tecnología de asistencia para asegurarnos de que funcionen para todos.
Cubriremos temas como el marcado semántico, los roles de ARIA, los formularios y la navegación accesibles, y luego nos sumergiremos en ejercicios de codificación donde podrás aplicar lo que has aprendido. Utilizaremos herramientas de prueba automatizadas para validar nuestro trabajo y asegurarnos de cumplir con los estándares de accesibilidad.
Al final de este masterclass, estarás equipado con el conocimiento y las habilidades para crear sitios web accesibles que funcionen para todos, y tendrás experiencia práctica utilizando las últimas técnicas y herramientas para el diseño inclusivo y las pruebas. ¡Únete a nosotros en este increíble masterclass de codificación y conviértete en un ninja de la accesibilidad web y el diseño inclusivo!
Pruebas automatizadas de accesibilidad con jest-axe y Lighthouse CI
TestJS Summit 2021TestJS Summit 2021
85 min
Pruebas automatizadas de accesibilidad con jest-axe y Lighthouse CI
Workshop
Bonnie Schulkin
Bonnie Schulkin
¿Incluyen tus pruebas automatizadas verificaciones de accesibilidad? Este masterclass cubrirá cómo comenzar con jest-axe para detectar violaciones de accesibilidad basadas en código, y Lighthouse CI para validar la accesibilidad de las páginas completamente renderizadas. Ninguna cantidad de pruebas automatizadas puede reemplazar las pruebas manuales de accesibilidad, pero estas verificaciones se asegurarán de que tus probadores manuales no estén haciendo más trabajo del necesario.
Accesibilidad web en aplicaciones JavaScript
React Summit 2022React Summit 2022
161 min
Accesibilidad web en aplicaciones JavaScript
Workshop
Sandrina Pereira
Sandrina Pereira
A menudo vemos que JavaScript daña la accesibilidad de un sitio web. En esta masterclass, aprenderás cómo evitar errores comunes y cómo utilizar JS a tu favor para mejorar la accesibilidad de tus aplicaciones web.
En esta masterclass exploraremos múltiples ejemplos del mundo real con problemas de accesibilidad, y aprenderás cómo hacer que funcionen para las personas que utilizan un mouse o un teclado. También aprenderás cómo se utilizan los lectores de pantalla, ¡y te mostraré que no hay razón para tener miedo de usar uno!
Únete a mí y déjame mostrarte cómo la accesibilidad no limita tus soluciones o habilidades. ¡Al contrario, las hace más inclusivas!
Al final, serás capaz de:- Comprender los principios de WCAG y cómo están organizados- Conocer casos comunes en los que JavaScript es esencial para la accesibilidad- Crear enlaces, botones y elementos conmutables inclusivos- Utilizar regiones en vivo para errores y estados de carga- Integrar la accesibilidad en el flujo de trabajo de tu equipo de inmediato- Darte cuenta de que crear sitios web accesibles no es tan difícil como parece ;)
Creando aplicaciones React Native accesibles
React Summit Remote Edition 2021React Summit Remote Edition 2021
91 min
Creando aplicaciones React Native accesibles
Workshop
Scott Vinkle
Scott Vinkle
React Native es un framework utilizado para crear aplicaciones nativas de iOS y Android de una manera con la que los desarrolladores web ya pueden estar familiarizados. Pero, ¿cómo asegurarse de que tus aplicaciones React Native sean inclusivas y utilizables para todos? Scott compartirá consejos sobre cómo probar y construir aplicaciones React Native con accesibilidad integrada.