Bonsoir,
Agacé par des vagues de spam que je devais nettoyé depuis l'admin, j'ai essayé il y a quelque temps de déplacer le formulaire dans une balise template , pour l'injecter au chargement de la page avec la bonne surprise de ne plus avoir à me prendre la tête à chercher une solution pour eradiqué les spams et même le capcha semble devenu inutile.
en gros,
- j'utilise une constante litterale en JavaScript pour y coller un <template> HTML de mon formulaire (là tu peut déjà y réinjecter quelques variables javascript au besoin.
- j'injecte cette constante HTML dans le document, (<template>)
- et enfin j'injecte dans le dom de la page le contenu de la balise template .
exemple de base:
un conteneur HTML dans la page qui va recevoir le formulaire
<div id="myFormTpl"></div>
Puis la partie js de base assez simple en fait:
const myformtpl =`<template id="myform">/* ici le formulaire HTML */</template>`;
window.addEventListener("load", (event) => {
document.body.insertAdjacentHTML( 'afterbegin', myformtpl);
let template = document.getElementById("myform");
let templateContent = template.content;
document.querySelector('#myFormTpl').appendChild(templateContent);
});
Je n'ai pas de gros site, mais si je ne fais rien, c'est des dizaines de formulaires remplis et soumis chaque jour et cette alternative d'aller cacher le HTML du formulaire dans une variable JavaScript au départ semble plutôt efficace (je n'ai plus de spam ou d'inscription avec des mails toxiques) et transparente pour les vrais visiteurs. Bon n'étant ni professionnel ni développeur, c'est juste une bricole perso qui semble être efficace de mon humble point de vue. 🙂