jsaction entries with only custom event names are reported as lost interactive controls

Cerrado Apto para principiantes
#4,355 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Ya se ha fusionado un pull request relacionado.

  • #4446 de @chubes4 — fusionado

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
75/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
php
Área
backend

Línea de trabajo

Empieza leyendo SourceAttribute::DECLARED_EVENTS, SourceDom::eventMetadata() y InteractionFallbackReporter::appendInteractiveControlBehaviorLossFallbacks(), que el issue identifica como la ruta de diagnóstico. Comprueba cómo se analizan los tipos de evento de jsaction, incluidos los tipos omitidos cuyo valor predeterminado es click. El trabajo estará terminado cuando las entradas que solo contienen eventos personalizados no produzcan ningún fallback de control interactivo, mientras que los eventos de interacción del DOM, como click, sí lo sigan produciendo.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Summary

jsaction entries that declare only custom (non-DOM) event names are reported as interactive_control_behavior_lost, which fails the import quality gate on ordinary content.

SourceAttribute::DECLARED_EVENTS treats any non-empty jsaction as a declared event, so SourceDom::eventMetadata() returns an event for it, and InteractionFallbackReporter::appendInteractiveControlBehaviorLossFallbacks() emits an unsupported fallback for every such element. JSAction's grammar is [eventType:]handler separated by ; (an omitted event type means click). Entries such as zXBUYb:zTPCnb name library-internal custom events dispatched by descendants. They do not make the element a user control.

Reduced reproduction

<!doctype html><html><head><meta charset="utf-8"><title>Declared custom events</title>
<style>.card{padding:16px;border:1px solid #ccc;margin:8px}</style></head>
<body>
<div class="card" jsaction="zXBUYb:zTPCnb;zQF9Uc:Qxe3nd;"><p>First card</p></div>
<div class="card" jsaction="rcuQ6b:WYd;GvneHb:og1FDd;"><p>Second card</p></div>
<div class="card" jsaction="zXBUYb:zTPCnb;"><p>Third card</p></div>
</body></html>

studio create --from page.html → static_site_importer_quality_failed: 3 unsupported_html_fallback failures, all interactive_control_behavior_lost.

Expected

Only jsaction entries whose event type is a DOM user-interaction event (click, keydown, input, change, submit, focus, touchstart, … or an omitted type, which defaults to click) count as declared events. Custom event names are not interaction evidence. The reduced page imports with zero fallbacks. Elements declaring click:handler keep being reported as before.

Real-world impact

On a 70-route Google Sites import, 7000 of 7069 unsupported fallbacks came from this diagnostic, capped at 100 per page. About 1750 elements carried only custom-event jsaction values.

Environment

Static Site Importer 1.33.331, Blocks Engine php-transformer (bundled), Data Liberation Agent 0.33.120, WordPress 7.1.4.

AI assistance

Claude via Pi (Roadie) ran the import, traced the diagnostic to SourceAttribute::DECLARED_EVENTS and reduced the page. Chris Huber directed the work.

Lenguaje dominante
PHP
Estrellas
25
Forks
3
Merge medio
3 h 25 min
PR fusionados (30 d)
935

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de Automattic/blocks-engine

Todos los issues de Automattic/blocks-engine

Issues similares

Más issues de PHP

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.