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
| Ereignis | Wann |
|---|---|
cdpcaptcha:widget.complete | Die Prüfung ist bestanden. detail.response enthält das Token für Ihren Server. |
cdpcaptcha:widget.error | Etwas ist fehlgeschlagen (Netzwerk, Sitekey, Ratenbegrenzung). detail.error.code nennt den Grund. Der Besucher kann zum Wiederholen klicken. |
cdpcaptcha:widget.expire | Die fertige Antwort ist abgelaufen, weil die Seite zu lange offen war. Der Besucher kann zum Neustart klicken. |
cdpcaptcha:widget.reset | reset() wurde aufgerufen. |
cdpcaptcha:widget.statechange | Jede 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
| Zustand | Bedeutung |
|---|---|
init | Widget-Objekt angelegt, Element noch nicht dargestellt. |
unactivated | Dargestellt, wartet auf den Start (Klick, Fokus, auto oder start()). |
requesting | Rätsel wird vom Server geholt. |
solving | Der Web Worker rechnet; der Fortschrittsbalken bewegt sich. |
solved | Nur im One-Click-Modus: gelöst, wartet auf den Klick. |
completed | Fertig. Das versteckte Feld enthält die Antwort. |
expired | Die Antwort ist nicht mehr gültig; das versteckte Feld enthält „.EXPIRED“. |
error | Fehlgeschlagen; das versteckte Feld enthält „.ERROR“. |
reset | Nach reset(); verhält sich wie unactivated. |
destroyed | Nach destroy(); das Element ist leer und das Widget kann nicht mehr benutzt werden. |
Fehlercodes
| Code | Bedeutung |
|---|---|
network_error | Der Browser konnte die API nicht erreichen. |
sitekey_missing | Das Element hat keinen Sitekey. |
sitekey_invalid | Unbekannter oder widerrufener Sitekey, oder die Herkunft der Seite ist dafür nicht erlaubt. |
rate_limited | Diese Adresse hat in kurzer Zeit zu viele Rätsel angefordert. |
other | Alles andere; detail enthält eine kurze Beschreibung. |
