Skip to main content
La Quiz API permite que tu propio JavaScript se comunique con un quiz mientras un visitante lo rellena. Puedes leer lo que ha respondido, modificar un bloque, saltar a un paso o enviarlo, todo sin tocar el quiz en el editor. Puedes usarla en cualquier sitio donde se ejecute JavaScript en la página: el código personalizado del propio quiz, un bloque de script o un fragmento de un gestor de etiquetas.

Obtén la API

La API te la entrega el evento ll-quiz-init como event.detail.llQuizApi. Guarda ese objeto y úsalo siempre que lo necesites.
Tu script puede ejecutarse antes o después de que se cargue el quiz. Si se registra tarde, ll-quiz-init se le reenvía automáticamente, así que este patrón siempre funciona.
Todos los demás eventos del quiz incluyen el mismo llQuizApi, así que también puedes reaccionar a un paso o a una respuesta y actuar en ese mismo momento. Consulta Eventos del quiz.

Pasos y bloques por nombre

Todas las funciones que reciben un paso o un bloque aceptan su nombre o su ID. Los nombres son lo que escribiste en el editor, así que son lo que usarás normalmente. Los IDs se generan automáticamente y tienen este aspecto: block-3f9c….
Ponle un nombre claro a cada bloque y a cada paso en el editor. Es la única configuración que necesita la API.
Si dos bloques o dos pasos comparten nombre, se usa el primero según el orden del quiz.

Lee las respuestas

getAnswers() devuelve todas las respuestas dadas hasta el momento, una entrada por bloque. getAnswersSimple() devuelve las mismas respuestas como un objeto sencillo cuyas claves son las etiquetas. Los bloques ocultos y las respuestas vacías no se incluyen.
Son exactamente los fields y fieldsSimple que incluyen los eventos, así que el código que gestiona uno gestiona los dos.

Sabe dónde está el visitante

index empieza en 0. isSubmitted pasa a true en cuanto esta visita envía el quiz.

Encuentra bloques

Las listas solo contienen bloques que guardan un valor. Los títulos, párrafos, imágenes y similares nunca aparecen. Además, getBlock() encuentra botones (Continue, Previous, Submit, Button), así que puedes cambiar su texto o desactivarlos.
getBlock() nunca devuelve undefined. Si no hay coincidencias, o si el bloque no puede contener un valor, obtienes un bloque de reserva: cada llamada sobre él muestra un aviso en la consola y no hace nada, y getValue() devuelve "". Tu código nunca falla, pero revisa la consola si algo no tiene efecto.
Campos de entrada (texto, email, teléfono, número, área de texto, fecha, fecha de nacimiento, código postal, dirección, OTP), opciones (opción múltiple, elección con imágenes, desplegable), casilla de verificación, control deslizante de rango, subida de archivos, firma y campos ocultos.Todo lo demás es visual o de navegación: título, párrafo, imagen, vídeo, separador, lista, loader, cuenta atrás, progreso, acordeón, enlaces, código personalizado, seguimiento y los botones. Llamar a getValue(), setValue(), reset() o validate() sobre uno de ellos lanza un error. Los contenedores son transparentes: los bloques que contienen se listan como cualquier otro bloque.

Lee y modifica un bloque

Todos los bloques que obtienes son el mismo tipo de objeto, así que los ejemplos siguientes funcionan en cualquier bloque que admita la llamada.

Valor

Establecer un valor mediante la API dispara ll-quiz-value-change con source: 'api', así que tus listeners pueden distinguirlo de cuando escribe el visitante.
  • Casilla de verificación: 'checked' o 'unchecked'
  • Opción múltiple, elección con imágenes, desplegable: el valor de la opción, por ejemplo 'pro'
  • Opción múltiple con varias selecciones: los valores unidos por el separador configurado en el bloque
  • Todo lo demás: el texto que escribió el visitante

Etiqueta y placeholder

Las etiquetas son texto plano, salvo en una casilla de verificación, donde se permite HTML para enlazar a los términos. setLabel() y getLabel() lanzan un error en los bloques que no tienen etiqueta.

Opciones

Los bloques de opción múltiple, elección con imágenes y desplegable exponen sus opciones:
Llamar a getOptions() en cualquier otro bloque lanza un error.

Errores y foco

Botones

enable() y disable() funcionan en los bloques Continue, Submit y Button, y lanzan un error en cualquier otro.

Visibilidad

Un bloque oculto no se valida, no se envía con el lead y no se muestra. undefined significa que nunca lo has cambiado, así que el bloque sigue su propia configuración.

Valida

La validación es asíncrona porque los campos de email, teléfono y OTP se comprueban contra un servidor. Los bloques ocultos siempre la superan.
Cuando un paso falla, el quiz también dispara ll-quiz-validation-error con cada bloque que falla y su mensaje, marcado con source: 'api'. Así, un solo listener puede gestionar tanto los intentos del visitante como los tuyos. Tienes los detalles en la página de eventos.
goNext(), goToStep() y submit() validan primero el paso que está en pantalla. Si no es válido, no avanzan, muestran un aviso en la consola y disparan ll-quiz-validation-error. goBack() nunca valida. submit() hace exactamente lo mismo que el botón Submit del visitante: se guarda el lead, se dispara ll-quiz-submit con la respuesta del servidor, se aplica la protección de envío único y se ejecuta la acción posterior al envío del botón Submit. En un paso sin botón Submit, el quiz se envía y se queda donde está. La promesa devuelta se resuelve cuando todo eso ha terminado.

Recetas

Todas las funciones de un vistazo

Las versiones anteriores tenían una función por cada tipo de búsqueda. Siguen funcionando exactamente igual que antes, así que no necesitas cambiar nada de lo que ya hayas escrito. El código nuevo debería usar las funciones unificadas.