En esta página, se explica cómo habilitar y personalizar el reCAPTCHA invisible en tu página web.
Para invocar el reCAPTCHA invisible, puedes hacer lo siguiente:
- Vincular automáticamente el desafío a un botón o
- Vincula el desafío a un botón de manera programática o
- Invoca el desafío de forma programática
Consulta Configuraciones para aprender a personalizar el reCAPTCHA invisible. Por ejemplo, puedes especificar el idioma o la ubicación de la insignia.
Consulta Cómo verificar la respuesta del usuario para comprobar si el usuario resolvió correctamente el CAPTCHA.
Vincular automáticamente el desafío a un botón
El método más fácil para usar el widget de reCAPTCHA invisible en tu página es incluir el recurso JavaScript necesario y agregar algunos atributos al botón HTML. Los atributos necesarios son un nombre de clase "g-recaptcha
", la clave de tu sitio en el atributo data-sitekey
y el nombre de una devolución de llamada de JavaScript para controlar la finalización del captcha en el atributo data-callback
.
<html>
<head>
<title>reCAPTCHA demo: Simple page</title>
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
<script>
function onSubmit(token) {
document.getElementById("demo-form").submit();
}
</script>
</head>
<body>
<form id="demo-form" action="?" method="POST">
<button class="g-recaptcha" data-sitekey="your_site_key" data-callback="onSubmit">Submit</button>
<br/>
</form>
</body>
</html>
La secuencia de comandos se debe cargar mediante el protocolo HTTPS y se puede incluir desde cualquier punto de la página sin restricciones.
Vincula el desafío a un botón de manera programática o invoca el desafío.
Para posponer la vinculación, especifica la función de devolución de llamada en carga y agrega parámetros al recurso JavaScript. Esto funciona igual que el desafío normal de reCAPTCHA.
Invoca el desafío de forma programática.
Para invocar la verificación de reCAPTCHA de manera programática, se puede renderizar el desafío en un elemento div con un atributo data-size="invisible"
y llamar a la ejecución de manera programática.
Crea un div con
data-size="invisible"
.<div class="g-recaptcha" data-sitekey="_your_site_key_" data-callback="onSubmit" data-size="invisible"> </div>
Llama a grecaptcha.execute desde un método de JavaScript.
grecaptcha.execute();
Cuando se ejecute la devolución de llamada, podrás llamar al método
grecaptcha.render
desde la API de JavaScript.
Configuración
Parámetros de recursos de JavaScript (api.js)
Parámetro | Valor | Descripción |
---|---|---|
OnLoad | Opcional El nombre de tu función de devolución de llamada que se ejecutará una vez que se hayan cargado todas las dependencias. | |
Renderizar | carga explícita |
Opcional. Establece si se debe representar el widget de forma explícita. La configuración predeterminada es OnLoad, que procesará el widget en la primera etiqueta g-recaptcha que encuentre. |
hl | Ver códigos de lenguajes | Opcional Obliga al widget a renderizarse en un lenguaje específico. Detecta automáticamente el lenguaje del usuario si no se especifica. |
Atributos de la etiqueta g-recaptcha y parámetros grecaptcha.render
Atributo de la etiqueta g-reCAPTCHA | Parámetro grecaptcha.render | Valor | Default | Descripción |
---|---|---|---|---|
data-sitekey | sitekey | Tu clave del sitio. | ||
insignia de datos | insignia | inferior derecha, inferior izquierda intercalada | abajo a la derecha | Opcional. Cambia la posición de la insignia de reCAPTCHA. "intercalado" te permite posicionarla con CSS. |
data-size | tamaño | invisible | Opcional. Se usa para crear un widget invisible vinculado a un elemento div y ejecutado de manera programática. | |
data-tabindex | tabindex | 0 | Opcional. El tabindex del desafío. Si otros elementos en tu página usan tabindex, debe configurarse para facilitar la navegación del usuario. | |
data-callback | callback | Opcional El nombre de tu función de devolución de llamada, ejecutada cuando el usuario envía una respuesta exitosa. El token g-recaptcha-response se pasa a tu devolución de llamada. |
||
data-expired-callback | expired-callback | Opcional El nombre de tu función de devolución de llamada, ejecutada cuando la respuesta reCAPTCHA caduca y el usuario necesita volver a verificar. | ||
data-error-callback | error-callback | Opcional El nombre de tu función de devolución de llamada, ejecutada cuando reCAPTCHA encuentra un error (generalmente conectividad de red) y no puede continuar hasta que se restablezca la conectividad. Si especificas una función aquí, eres responsable de informar al usuario que debe volver a intentarlo. | ||
aisladas | falso | Opcional. Para que los propietarios de complementos no interfieran en las instalaciones de reCAPTCHA existentes en una página. Si es verdadero, esta instancia de reCAPTCHA será parte de un espacio de ID independiente. |
API de JavaScript
Método | Descripción |
---|---|
grecaptcha.render( container,
parámetros,
heredado
)
|
Representa el contenedor como un widget reCAPTCHA y muestra el ID del widget recién creado. conteiner El elemento HTML para renderizar el widget reCAPTCHA. Especifica el ID del contenedor (string) o el elemento DOM mismo. parameters Un objeto que contiene parámetros como pares clave=valor, por ejemplo, {"sitekey": "your_site_key", "theme": "light"}. Consulta los parámetros de grecaptcha.render. heredar Usa los atributos data-* existentes en el elemento si no se especifica el parámetro correspondiente. Los parámetros tendrán prioridad sobre los atributos. |
grecaptcha.execute( opt_widget_id
)
|
Invoca de manera programática la verificación de reCAPTCHA. Se usa si el reCAPTCHA invisible está en un div
en lugar de un botón. opt_widget_id ID opcional del widget, predeterminado del primer widget creado si no se especifica. |
grecaptcha.reset( opt_widget_id ) |
Restablece el widget de reCAPTCHA. opt_widget_id ID opcional del widget, predeterminado del primer widget creado si no se especifica. |
grecaptcha.getResponse( opt_widget_id ) |
Obtiene la respuesta para el widget de reCAPTCHA. opt_widget_id ID opcional del widget, predeterminado del primer widget creado si no se especifica. |
Ejemplos
Renderizado explícito después de una devolución de llamada de carga
<html>
<head>
<title>reCAPTCHA demo: Explicit render after an onload callback</title>
<script>
var onSubmit = function(token) {
console.log('success!');
};
var onloadCallback = function() {
grecaptcha.render('submit', {
'sitekey' : 'your_site_key',
'callback' : onSubmit
});
};
</script>
</head>
<body>
<form action="?" method="POST">
<input id="submit" type="submit" value="Submit">
</form>
<script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit"
async defer>
</script>
</body>
</html>
Invocar el desafío de reCAPTCHA invisible después de la validación del lado del cliente
<html>
<head>
<script>
function onSubmit(token) {
alert('thanks ' + document.getElementById('field').value);
}
function validate(event) {
event.preventDefault();
if (!document.getElementById('field').value) {
alert("You must add text to the required field");
} else {
grecaptcha.execute();
}
}
function onload() {
var element = document.getElementById('submit');
element.onclick = validate;
}
</script>
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
</head>
<body>
<form>
Name: (required) <input id="field" name="field">
<div id="recaptcha" class="g-recaptcha"
data-sitekey="_your_site_key_"
data-callback="onSubmit"
data-size="invisible"></div>
<button id="submit">submit</button>
</form>
<script>onload();</script>
</body>
</html>