Técnica Scripts de cliente WCAG 2.2
SCR33Usar scripts para desplazar el contenido y proporcionar un mecanismo para pausarlo
En resumen
El texto que se desplaza automáticamente por la pantalla resulta difícil o imposible de leer para personas con baja visión o con dificultades cognitivas, y distrae a muchas otras. Esta técnica muestra cómo, si se usa JavaScript para desplazar contenido, ofrecer también un control para pausarlo y reanudarlo desde el mismo punto. Es aplicable a marquesinas, tickers y cualquier texto en movimiento controlado por script.
Aplicabilidad
Tecnologías que permiten desplazar el contenido mediante scripts.
Descripción
El objetivo de esta técnica es proporcionar a los usuarios una forma de detener el contenido en desplazamiento cuando dicho desplazamiento lo genera un script. El contenido que se desplaza puede ser difícil o imposible de leer para los usuarios con baja visión o con discapacidades cognitivas. El movimiento también puede distraer a algunas personas y dificultarles la concentración en otras partes de la página web.
Ejemplos
En este ejemplo se usan CSS y JavaScript para presentar visualmente un texto en formato de desplazamiento. Se incluye un enlace para pausar el movimiento de desplazamiento.
Esta implementación mostrará el texto completo y omitirá el enlace cuando JavaScript o CSS no sean compatibles o estén desactivados.
El componente HTML
...
<div id="scroller">
<p id="tag">This text will scroll and a Pause/Scroll link will be present
when JavaScript and CSS are supported and active.</p>
</div>
...
El componente CSS
...
body {
font:1em verdana,sans-serif;
color:#000;
margin:0
}
#scroller {
position:relative;
overflow:hidden;
width:15em;
border:1px solid #008080;
}
#tag {
margin:2px 0;
}
#testP {
visibility:hidden;
position:absolute;
white-space:nowrap;
}
#top {
width:350px;
margin:auto;
}
...
El componente JavaScript
var speed=50 // speed of scroller
var step=3 // smoothness of movement
var StartActionText= "Scroll" // Text for start link
var StopActionText = "Pause" // Text for stop link
var x, scroll, divW, sText=""
function onclickIE(idAttr,handler,call){
if ((document.all)&&(document.getElementById)){idAttr[handler]="Javascript:"+call}
}
function addLink(id,call,txt){
var e=document.createElement('a');
e.setAttribute('href',call);
var linktext=document.createTextNode(txt);
e.appendChild(linktext);
document.getElementById(id).appendChild(e);
}
function getElementStyle() {
var elem = document.getElementById('scroller');
if (elem.currentStyle) {
return elem.currentStyle.overflow;
}
else if (window.getComputedStyle) {
var compStyle = window.getComputedStyle(elem, '');
return compStyle.getPropertyValue("overflow");
}
return "";
}
function addControls(){
// test for CSS support first
// test for the overlow property value set in style element or external file
if (getElementStyle()=="hidden") {
var f=document.createElement('div');
f.setAttribute('id','controls');
document.getElementById('scroller').parentNode.appendChild(f);
addLink('controls','Javascript:clickAction(0)',StopActionText);
onclickIE(document.getElementById('controls').childNodes[0],"href",'clickAction(0)');
document.getElementById('controls').style.display='block';
}
}
function stopScroller(){clearTimeout(scroll)}
function setAction(callvalue,txt){
var c=document.getElementById('controls')
c.childNodes[0].setAttribute('href','Javascript:clickAction('+callvalue+')')
onclickIE(document.getElementById('controls').childNodes[0],"href",'clickAction
('+callvalue+')')
c.childNodes[0].firstChild.nodeValue=txt
}
function clickAction(no){
switch(no) {
case 0:
stopScroller();
setAction(1,StartActionText);
break;
case 1:
startScroller();
setAction(0,StopActionText);
}
}
function startScroller(){
document.getElementById('tag').style.whiteSpace='nowrap'
var p=document.createElement('p')
p.id='testP'
p.style.fontSize='25%' //fix for mozilla. multiply by 4 before using
x-=step
if (document.getElementById('tag').className) p.className=document.getElementById
('tag').className
p.appendChild(document.createTextNode(sText))
document.body.appendChild(p)
pw=p.offsetWidth
document.body.removeChild(p)
if (x<(pw*4)*-1){x=divW}
document.getElementById('tag').style.left=x+'px'
scroll=setTimeout('startScroller()',speed)
}
function initScroller(){
if (document.getElementById && document.createElement && document.body.appendChild) {
addControls();
divW=document.getElementById('scroller').offsetWidth;
x=divW;
document.getElementById('tag').style.position='relative';
document.getElementById('tag').style.left=divW+'px';
var ss=document.getElementById('tag').childNodes;
for (i=0;i<ss.length;i++) {sText+=ss[i].nodeValue+" "};
scroll=setTimeout('startScroller()',speed);
}
}
function addLoadEvent(func) {
if (!document.getElementById | !document.getElementsByTagName) return
var oldonload = window.onload
if (typeof window.onload != 'function') {
window.onload = func;
} else {
window.onload = function() {
oldonload()
func()
}
}
}
addLoadEvent(initScroller)
Hay disponible un ejemplo funcional de este código: Example of using script to scroll content and providing a mechanism to pause it (ejemplo de uso de scripts para desplazar contenido con un mecanismo para pausarlo).
Pruebas
Procedimiento
- Comprobar que se proporciona un mecanismo para pausar el contenido en desplazamiento.
- Usar el mecanismo de pausa para pausar el contenido en desplazamiento.
- Comprobar que el desplazamiento se ha detenido y no se reinicia por sí solo.
- Comprobar que se proporciona un mecanismo para reanudar el contenido pausado.
- Usar el mecanismo de reanudación proporcionado para reanudar el contenido en desplazamiento.
- Comprobar que el desplazamiento se ha reanudado desde el punto en el que se detuvo.
Resultados esperados
- Las comprobaciones n.º 3 y n.º 6 son verdaderas.
Cómo lo comprobamos en ADDAW
En las auditorías de accesibilidad de ADDAW revisamos cada criterio de conformidad siguiendo este catálogo de técnicas: comprobamos si la web aplica una técnica suficiente y documentamos cada fallo común con capturas y el código afectado, para que el equipo de desarrollo sepa exactamente qué corregir. Los informes siguen la metodología del Observatorio de Accesibilidad y la norma UNE-EN 301 549.
Fuente y licencia
Traducción al español, no oficial, realizada por ADDAW a partir de la técnica SCR33 del documento «Techniques for WCAG 2.2» del W3C (versión del repositorio público del W3C a 22/10/2026). Copyright © W3C® (MIT, ERCIM, Keio, Beihang). Se publica conforme a la licencia de documentos del W3C. El texto normativo de referencia es el original en inglés; si detecta un error en la traducción, escríbanos.