identical-iframes-same-purpose

Los marcos con el mismo nombre deben mostrar el mismo recurso

automaticWCAG 4.1.2 (A)confianza: mediumgravedad: moderaterobust

Comprueba que los elementos <iframe>/<frame> que comparten un nombre accesible incrusten el mismo recurso, ya que un nombre solo puede describir un recurso.

Ámbito de aplicación. Se aplica a cada conjunto de dos o más elementos <iframe>/<frame> que están incluidos en el árbol de accesibilidad y comparten el mismo nombre accesible no vacío, comparado con los espacios en blanco colapsados. Un marco nombrado únicamente mediante un mecanismo que no nombra nada, u oculto del árbol de accesibilidad, no forma parte de un conjunto; un conjunto necesita dos miembros supervivientes para existir siquiera.

Resultado esperado. Todos los marcos de un conjunto se resuelven en el mismo recurso. Un nombre compartido describe un único recurso, por lo que dos marcos que responden a él deben incrustar el mismo.

Qué informa un hallazgo.

  • name: el nombre accesible que comparten los marcos.
  • resource: la dirección que incrusta este marco, como URL absoluta sin su fragmento. Vacío (null) cuando su src no se pudo resolver (IFRAME_RESOURCE_UNRESOLVED).
  • setSize: cuántos marcos comparten el nombre.

Estos campos de data.details ayudan a leer y reproducir un hallazgo. Salvo reasonCode y los pocos campos que Esquema de salida indica como estables, no son un contrato estable: un campo puede cambiar de nombre o desaparecer en una versión menor, así que no construyas sobre ellos.

Ejemplos

pass
<iframe title="Weather widget" src="https://example.test/weather"></iframe>
<iframe title="Weather widget" src="https://example.test/weather"></iframe>

Ambos marcos comparten el nombre "Weather widget" e incrustan el mismo recurso.

can't tell
<iframe title="Weather widget" src="https://example.test/weather?city=nyc"></iframe>
<iframe title="Weather widget" src="https://example.test/weather?city=sf"></iframe>

Ambos marcos comparten el mismo nombre pero se resuelven en recursos distintos: posiblemente dos widgets legítimamente equivalentes, posiblemente un marco mal etiquetado; el marcado por sí solo no lo resuelve.

Cómo comprobarlo

Cuando esta regla no puede decidir, informa cantTell y deja la pregunta a una persona. Cada pregunta que puede plantear aparece aquí bajo su código de motivo, con los pasos para responderla. Un hallazgo lleva los mismos pasos en howToCheck, en el idioma del análisis. Consulta Esquema de salida.

IFRAME_RESOURCE_DIFFERS

  1. Localizar los marcos que indica el informe y anotar el nombre accesible compartido (normalmente su title).
  2. Observar lo que muestra cada marco y su dirección src.
  3. Decidir si cumplen la misma función (el mismo mapa o widget, y solo difieren los parámetros de seguimiento) o funciones distintas (dos vídeos diferentes).

Se cumple. Los marcos tienen la misma finalidad, así que compartir nombre está bien.

No se cumple. Los marcos insertan contenido distinto con el mismo nombre (como dos vídeos diferentes titulados ambos «YouTube video player»), así que los usuarios no pueden distinguirlos, lo que incumple WCAG 4.1.2 (ACT 4b1c6c).

IFRAME_RESOURCE_UNRESOLVED

  1. Localizar los marcos que indica el informe y anotar el nombre accesible compartido.
  2. Desplazar cada marco hasta que quede a la vista para que se cargue el contenido de carga diferida, y luego inspeccionarlo en busca de su src, data-src o srcdoc.
  3. Comparar lo que muestra cada marco y decidir si cumplen la misma función.

Se cumple. Los marcos tienen la misma finalidad, así que compartir nombre está bien.

No se cumple. Los marcos muestran contenido distinto con el mismo nombre, así que los usuarios no pueden distinguirlos, lo que incumple WCAG 4.1.2 (ACT 4b1c6c).

Ver código fuente