Ejemplo 02: Capturar LoAF entry básico

← Volver al índice

La solución: Long Animation Frames API

En el ejemplo anterior vimos que Event Timing API nos dice cuándo algo va mal, pero no por qué.

Long Animation Frames API va más allá: nos muestra exactamente qué scripts se ejecutaron en cada frame lento, con información detallada de:

Demo interactiva

📊 Estado:
Esperando interacción...

Long Animation Frame detectado:

¿Qué estamos viendo ahora?

Información del Frame:

Información de Scripts (¡esto es nuevo!):

✅ La diferencia clave:

Ahora sabemos exactamente qué función (handleSlowClick) en qué archivo (02-basic-loaf.html) causó el frame lento.

Ya no es un misterio. Podemos ir directamente al código problemático.

Código del ejemplo

// Long Animation Frames API
const observer = new PerformanceObserver((list) => {
  for (const entry of list.getEntries()) {
    console.log('Frame lento detectado!', entry);

    // Información del frame
    console.log('Duration:', entry.duration);
    console.log('Blocking duration:', entry.blockingDuration);

    // Scripts que se ejecutaron (¡información detallada!)
    entry.scripts.forEach(script => {
      console.log('Script:', script.sourceFunctionName);
      console.log('Invocado por:', script.invoker);
      console.log('URL:', script.sourceURL);
      console.log('Duración:', script.duration);
    });
  }
});

observer.observe({
  type: 'long-animation-frame',
  buffered: true
});

Comparación: Antes vs Ahora

Información Event Timing API LoAF API
¿Cuánto tardó? ✅ Sí ✅ Sí
¿Qué función? ❌ No ✅ Sí
¿Qué archivo? ❌ No ✅ Sí
¿Múltiples scripts? ❌ No ✅ Sí
¿Layout thrashing? ❌ No ✅ Sí