Widget

Todos los atributos, los tres modos y la API JavaScript para formularios cargados después.

Opciones del widget

El widget se configura mediante atributos data-. Van en el contenedor con data-captchacore-widget y algunos además en el formulario. Cada valor aquí sustituye al predeterminado que fijó para el sitio en el panel de administración.

Atributo Valores Estándar Descripción
data-theme auto | light | dark auto Esquema de color. auto sigue la configuración del sistema del visitante.
data-color Color hexadecimal #34d399 Color de acento para la casilla y el borde
data-label Texto según el idioma Etiqueta junto a la casilla
data-brand Texto o vacío CaptchaCore Marca a la derecha, vacío = oculto
data-size normal | compact normal normal mide 360 px de ancho, compact 300 px
data-lang de en fr es it nl pl pt tr ja zh ko ar ru idioma de la página Idioma de los textos del widget. Sin valor cuenta lang en el formulario y, en su defecto, el del elemento <html>.
data-start auto | focus | none auto Cuándo empieza la comprobación: de inmediato, al primer foco en el formulario o solo al hacer clic.
data-mode interactive | visible | invisible interactive Sustituye el modo fijado en la administración para este formulario concreto.
data-form-type login register contact comment checkout password_reset newsletter custom — Determina qué política de formulario se aplica. Va en el formulario o en el contenedor.

Atributos en la etiqueta script

Estos valores van en el propio elemento <script> y se aplican a todos los widgets de la página.

Atributo Obligatorio Descripción
data-site-key sí Clave pública del sitio (cc_pub_…).
data-service-url sí https://api.captchacore.eu
data-worker-url no Ruta propia al worker de prueba de trabajo, solo necesaria con un alojamiento distinto.
data-fail-open no Solo false: el formulario espera en lugar de enviar el marcador cc-unavailable tras un error de conexión persistente.

Modos del widget

El modo se define con data-mode="..." en el elemento del widget <div data-captchacore-widget>; si no se indica, se aplica la configuración del sitio en el área de cliente.

interactive Recomendado

Widget siempre visible. El PoW se resuelve automáticamente. La casilla se marca sola cuando se detecta suficiente interacción humana (2+ caracteres escritos, movimiento del ratón, 2+ segundos). Los usuarios reales no necesitan hacer clic. Alternativa: clic manual.

visible

Widget visible. El usuario debe hacer clic en la casilla para iniciar la verificación. Similar a reCAPTCHA v2.

invisible

Sin interfaz visible. El PoW se resuelve por completo en segundo plano. El token se inserta automáticamente al enviar. Ideal cuando no se desea una protección visible.

API JavaScript del widget

El script crea el objeto global CaptchaCoreV2. En páginas estáticas no necesita nada de esto: el widget se vincula solo a todos los formularios adecuados al cargar. La API resulta relevante en cuanto los formularios se cargan por JavaScript, es decir, en sistemas de tienda, aplicaciones de una sola página y diálogos modales.

Método Finalidad
CaptchaCoreV2.init(config) Inicialización manual cuando el script se incluyó sin atributos data. Espera al menos siteKey y serviceUrl.
CaptchaCoreV2.attach() Vuelve a buscar formularios y vincula los nuevos. Llámelo tras cada sustitución del DOM.
CaptchaCoreV2.destroy() Desvincula todos los widgets, detiene el observador y limpia. Útil antes de un cambio de página en una SPA.
CaptchaCoreV2.getWidgets() Devuelve las instancias de widget vinculadas actualmente.
CaptchaCoreV2.getWidget(form) El widget de un formulario concreto (elemento o selector CSS); si no, null.
widget.getToken() Token para exactamente una llamada a /verify, con los datos de comportamiento recopilados desde la carga. A continuación carga de inmediato el siguiente desafío — para formularios AJAX con varios envíos por visita.
CaptchaCoreV2.getLanguages() Lista de los 14 códigos de idioma admitidos.
CaptchaCoreV2.on(event, fn) Suscribirse a un evento.
CaptchaCoreV2.off(event, fn) Cancelar la suscripción.

Eventos

CaptchaCoreV2.on('ready', function (data) {
  // Widget ist gebunden und einsatzbereit
});

CaptchaCoreV2.on('error', function (err) {
  // Netzwerkfehler, abgelaufener Nonce, ungültiger Schlüssel
  console.warn('CaptchaCore:', err);
});

Formularios cargados después

El widget observa el contenido de la página y detecta por sí mismo los nuevos formularios con data-captchacore. Eso cubre la mayoría de los casos. Sin embargo, si un formulario se sustituye y se envía de inmediato, el observador puede llegar tarde: en ese caso llame explícitamente a attach() tras insertarlo.

// Beispiel: Formular per fetch nachgeladen
const html = await (await fetch(url)).text();
container.innerHTML = html;
CaptchaCoreV2.attach();   // bindet das neue Formular an

Enviar formularios con fetch()

Si su formulario se envía con fetch() o XHR y permite varios envíos por visita (búsqueda, comprobación de dominios, carrito), solicite antes de cada petición un token propio con widget.getToken(). Cada token vale para exactamente una verificación; el widget resuelve el siguiente desafío en segundo plano mientras el visitante sigue trabajando. Las llamadas simultáneas se atienden una tras otra y nunca reciben el mismo token.

const form = document.querySelector('#domaincheck');

form.addEventListener('submit', async (e) => {
  e.preventDefault();
  const body = new FormData(form);
  try {
    body.set('captchacore_token', await CaptchaCoreV2.getWidget(form).getToken());
  } catch {
    // Dienst nicht erreichbar: Platzhalter senden, Ihr Server entscheidet (Fail-Open)
    body.set('captchacore_token', 'cc-unavailable');
  }
  const res = await fetch('/domaincheck', {
    method: 'POST', body,
    headers: { Accept: 'application/json' },   // Fehler als JSON statt Weiterleitung
  });
});

Para sistemas de tienda y foros

Sistemas como Shopware, WooCommerce o phpBB sustituyen con frecuencia el registro, los formularios de dirección y los campos de comentario mediante AJAX. Enganche attach() al evento correspondiente del sistema, una vez que el nuevo contenido esté en el DOM. Una segunda llamada no hace daño: los formularios ya vinculados se omiten.

← Atrás Integraciones Siguiente → Referencia de la API