I would like to make my own website, where I use reCAPTCHA. However, I don't know how to wait after grecaptcha.execute() until the user has completed the tasks. Because now the link is called directly without passing the tasks. For the rest I use the standard Google Script https://developers.google.com/recaptcha/docs/invisible It is the reCAPTCHA v2 invisible.
I would be happy about answers.
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
<script>
function onSubmit(token) {
grecaptcha.execute().then(var vslg = document.getElementById("vslg").value;
window.location.replace("url");
}
</script>
</head>
<body>
<a class="button"></a>
<div class="topBar">
</div>
<div class="underTopBar">
<form action="JavaScript:onSubmit()" class="flex-itemform form" method="POST" id="formV">
<table>
<tr>
<td>
<div>
<input type="text" id="vslg" required>
</div>
</td>
<td>
<div>
<div class="g-recaptcha"
data-sitekey="..."
data-callback="onSubmit"
data-size="invisible">
</div>
<input type="submit" class="buttonDesign" value="Senden">
</div>
</td>
<tr>
</table>
</form>
</div>
The following code does this:
<button class="g-recaptcha"...
is the Automatically bind the challenge to a button. It will automatically trigger the invisible recaptcha when the button is clicked.g-recaptcha-response
which contains the token and then run theonSubmit
callback which submits the form.Important: You still need to verify the token
g-recaptcha-response
server side. See Verifying the user's response. Without verifying the token, adding the recaptcha to the frontend doesn't stop anyone from submitting the form.