Entwickler-Dokumentation

Ereignisse und Ablauf

Das Widget löst DOM-Ereignisse an seinem Element aus.
Sie steigen auf, Sie können also auch am Formular oder an document lauschen.
Dieselben Ereignisse gibt es über widget.addEventListener().

JavaScript
const el = document.querySelector('.cdp-captcha');
const button = document.querySelector('#send');
button.disabled = true;

el.addEventListener('cdpcaptcha:widget.complete', (ev) => {
  console.log('response', ev.detail.response);
  button.disabled = false;
});
el.addEventListener('cdpcaptcha:widget.error', (ev) => {
  console.warn('captcha error', ev.detail.error.code);
  button.disabled = false; // let the visitor submit; your server decides
});
el.addEventListener('cdpcaptcha:widget.expire', () => { button.disabled = true; });

Ereignisse

EreignisWann
cdpcaptcha:widget.completeDie Prüfung ist bestanden. detail.response enthält das Token für Ihren Server.
cdpcaptcha:widget.errorEtwas ist fehlgeschlagen (Netzwerk, Sitekey, Ratenbegrenzung). detail.error.code nennt den Grund. Der Besucher kann zum Wiederholen klicken.
cdpcaptcha:widget.expireDie fertige Antwort ist abgelaufen, weil die Seite zu lange offen war. Der Besucher kann zum Neustart klicken.
cdpcaptcha:widget.resetreset() wurde aufgerufen.
cdpcaptcha:widget.statechangeJede Zustandsänderung; detail.state ist der neue Zustand.

Jedes Ereignis trägt detail = { name, state, response, id, error }.
error ist null, außer der Zustand ist error;
dann ist es { code, detail }.

Zustände

ZustandBedeutung
initWidget-Objekt angelegt, Element noch nicht dargestellt.
unactivatedDargestellt, wartet auf den Start (Klick, Fokus, auto oder start()).
requestingRätsel wird vom Server geholt.
solvingDer Web Worker rechnet; der Fortschrittsbalken bewegt sich.
solvedNur im One-Click-Modus: gelöst, wartet auf den Klick.
completedFertig. Das versteckte Feld enthält die Antwort.
expiredDie Antwort ist nicht mehr gültig; das versteckte Feld enthält „.EXPIRED“.
errorFehlgeschlagen; das versteckte Feld enthält „.ERROR“.
resetNach reset(); verhält sich wie unactivated.
destroyedNach destroy(); das Element ist leer und das Widget kann nicht mehr benutzt werden.

Fehlercodes

CodeBedeutung
network_errorDer Browser konnte die API nicht erreichen.
sitekey_missingDas Element hat keinen Sitekey.
sitekey_invalidUnbekannter oder widerrufener Sitekey, oder die Herkunft der Seite ist dafür nicht erlaubt.
rate_limitedDiese Adresse hat in kurzer Zeit zu viele Rätsel angefordert.
otherAlles andere; detail enthält eine kurze Beschreibung.