Widget

Tous les attributs, les trois modes et l'API JavaScript pour les formulaires chargés ultérieurement.

Options du widget

Le widget se configure via des attributs data-. Ils se placent sur le conteneur portant data-captchacore-widget, certains également sur le formulaire. Chaque valeur ici remplace le réglage par défaut défini pour le site dans l'administration.

Attribut Valeurs Standard Description
data-theme auto | light | dark auto Thème de couleur. auto suit le réglage système du visiteur.
data-color Couleur hexadécimale #34d399 Couleur d'accent pour la case et la bordure
data-label Texte selon la langue Libellé à côté de la case
data-brand Texte ou vide CaptchaCore Marque à droite, vide = masquée
data-size normal | compact normal normal fait 360 px de large, compact 300 px
data-lang de en fr es it nl pl pt tr ja zh ko ar ru langue de la page Langue des textes du widget. Sans valeur, l'attribut lang du formulaire compte, sinon celui de l'élément <html>.
data-start auto | focus | none auto Quand la vérification démarre : immédiatement, au premier focus dans le formulaire, ou seulement au clic.
data-mode interactive | visible | invisible interactive Remplace le mode défini dans l'administration pour ce seul formulaire.
data-form-type login register contact comment checkout password_reset newsletter custom — Détermine quelle politique de formulaire s'applique. Se place sur le formulaire ou le conteneur.

Attributs sur la balise script

Ces valeurs se placent sur l'élément <script> lui-même et s'appliquent à tous les widgets de la page.

Attribut Obligatoire Description
data-site-key oui Clé publique du site (cc_pub_…).
data-service-url oui https://api.captchacore.eu
data-worker-url non Chemin personnalisé vers le worker de preuve de travail, nécessaire seulement avec un hébergement différent.
data-fail-open non Uniquement false : le formulaire attend au lieu d'envoyer le marqueur cc-unavailable après une erreur de connexion persistante.

Modes du widget

Le mode se définit avec data-mode="..." sur l'élément du widget <div data-captchacore-widget> ; à défaut, le réglage du site dans l'espace client s'applique.

interactive Recommandé

Widget toujours visible. Le PoW se résout automatiquement. La case se coche d’elle-même dès qu’une interaction humaine suffisante est détectée (2+ caractères saisis, mouvement de souris, 2+ secondes). Aucun clic nécessaire pour les vrais utilisateurs. Repli : clic manuel.

visible

Widget visible. L’utilisateur doit cliquer sur la case pour lancer la vérification. Semblable à reCAPTCHA v2.

invisible

Aucune interface visible. Le PoW se résout entièrement en arrière-plan. Le jeton est inséré automatiquement à l’envoi. Idéal lorsqu’aucune protection visible n’est souhaitée.

API JavaScript du widget

Le script crée l'objet global CaptchaCoreV2. Sur des pages statiques, vous n'en avez pas besoin : le widget se lie de lui-même à tous les formulaires correspondants au chargement. L'API devient utile dès que des formulaires sont chargés en JavaScript, donc dans les systèmes de boutique, les applications monopage et les fenêtres modales.

Méthode Finalité
CaptchaCoreV2.init(config) Initialisation manuelle lorsque le script a été inclus sans attributs data. Attend au moins siteKey et serviceUrl.
CaptchaCoreV2.attach() Recherche à nouveau les formulaires et lie les nouveaux. À appeler après chaque remplacement du DOM.
CaptchaCoreV2.destroy() Détache tous les widgets, arrête l'observateur et nettoie. Utile avant un changement de page dans une SPA.
CaptchaCoreV2.getWidgets() Renvoie les instances de widget actuellement liées.
CaptchaCoreV2.getWidget(form) Le widget d’un formulaire donné (élément ou sélecteur CSS), sinon null.
widget.getToken() Jeton pour exactement un appel à /verify, avec les données comportementales collectées depuis le chargement. Charge ensuite immédiatement le défi suivant — pour les formulaires AJAX avec plusieurs envois par page.
CaptchaCoreV2.getLanguages() Liste des 14 codes de langue pris en charge.
CaptchaCoreV2.on(event, fn) S'abonner à un événement.
CaptchaCoreV2.off(event, fn) Résilier l'abonnement.

Événements

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);
});

Formulaires chargés ultérieurement

Le widget surveille le contenu de la page et détecte de lui-même les nouveaux formulaires portant data-captchacore. Cela couvre la plupart des cas. Si toutefois un formulaire est remplacé puis envoyé dans la foulée, l'observateur peut arriver trop tard : appelez alors explicitement attach() après l'insertion.

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

Envoyer des formulaires via fetch()

Si votre formulaire est envoyé via fetch() ou XHR et permet plusieurs envois par page (recherche, vérification de domaine, panier), demandez un jeton distinct avec widget.getToken() avant chaque requête. Chaque jeton vaut pour exactement une vérification ; le widget résout le défi suivant en arrière-plan pendant que le visiteur continue. Les appels simultanés sont traités l’un après l’autre et ne reçoivent jamais le même jeton.

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
  });
});

Pour les systèmes de boutique et de forum

Des systèmes comme Shopware, WooCommerce ou phpBB remplacent souvent l'inscription, les formulaires d'adresse et les champs de commentaire via AJAX. Rattachez attach() à l'événement correspondant du système, une fois le nouveau contenu dans le DOM. Un second appel ne nuit pas : les formulaires déjà liés sont ignorés.

← Retour Intégrations Suivant → Référence de l'API