本页面介绍了如何启用和自定义网页上隐形的 reCAPTCHA。
如需调用隐形 reCAPTCHA,您可以执行以下任一操作:
如需了解如何自定义隐形 reCAPTCHA,请参阅配置。例如,您可能需要指定语言或标记位置。
请参阅验证用户的响应,确认用户是否成功完成了人机识别系统验证。
自动将挑战绑定到按钮
若要在网页上使用不可见的 reCAPTCHA 微件,最简单的方法是添加必要的 JavaScript 资源,并向 HTML 按钮添加一些属性。必需的属性包括类名“g-recaptcha
”、data-sitekey
属性中的网站键,以及用于在 data-callback
属性中完成人机识别系统验证的 JavaScript 回调的名称。
<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>
该脚本必须使用 HTTPS 协议进行加载,并且可从页面上的任何位置随意添加。
以编程方式将挑战绑定到按钮或调用挑战。
通过指定 onload 回调函数和向 JavaScript 资源添加参数,可以延迟绑定。这与常规的 reCAPTCHA 验证相同。
以编程方式调用挑战。
可以通过在具有属性 data-size="invisible"
的 div 中呈现质询并以编程方式调用执行来以编程方式调用 reCAPTCHA 验证。
使用
data-size="invisible"
创建一个 div。<div class="g-recaptcha" data-sitekey="_your_site_key_" data-callback="onSubmit" data-size="invisible"> </div>
通过 JavaScript 方法调用 grecaptcha.execute。
grecaptcha.execute();
执行回调函数时,您可以从 JavaScript API 调用
grecaptcha.render
方法。
配置
JavaScript 资源 (api.js) 参数
参数 | 值 | 说明 |
---|---|---|
onload | (可选)加载所有依赖项后要执行的回调函数的名称。 | |
呈现 | 明确的 onload |
(可选)是否显式呈现微件。默认为 onload,它将在找到的第一个 g-recaptcha 标签中呈现微件。 |
hl | 参阅语言代码 | (可选)强制微件以特定语言呈现。如果未指定语言,则会自动检测用户的语言。 |
g-recaptcha 标签特性和 grecaptcha.render 参数
g-recaptcha 标签特性 | grecaptcha.render 参数 | 值 | 默认 | 说明 |
---|---|---|---|---|
data-sitekey | sitekey | 您的网站密钥。 | ||
数据徽章 | 徽章 | 右下角右下角内嵌 | 右下角 | (可选)重新放置 reCAPTCHA 徽章。通过“inline”,您可以使用 CSS 放置它。 |
data-size | 大小 | invisible | (可选)用于创建绑定到 div 并以编程方式执行的不可见 widget。 | |
data-tabindex | tabindex | 0 | (可选)挑战的 Tabindex。如果页面中的其他元素使用 tabindex,则应对其进行设置使其可更为轻松地使用户导航。 | |
data-callback | callback | 可选。当用户提交成功的响应时执行的回调函数的名称。g-recaptcha-response 令牌将传递给您的回调。 |
||
data-expired-callback | expired-callback | (可选)在 reCAPTCHA 响应到期且用户需要重新验证时执行的回调函数的名称,。 | ||
data-error-callback | error-callback | (可选)在 reCAPTCHA 遇到错误(通常是网络连接问题),并且在恢复连接之前无法继续时执行的回调函数名称。如果在此处指定功能,您需负责通知用户进行重试。 | ||
隔离 | false | (可选)以免插件所有者干扰网页上现有的 reCAPTCHA 安装。如果为 true,则此 reCAPTCHA 实例将属于一个单独的 ID 空间。 |
JavaScript API
方法 | 说明 |
---|---|
grecaptcha.render( 容器
参数
继承
。)
|
将容器呈现为 reCAPTCHA 微件,并返回新创建的微件的 ID。 容器 用于呈现 reCAPTCHA 微件的 HTML 元素。 指定容器的 ID(字符串)或 DOM 元素本身。 参数 包含参数(例如 {"sitekey": "your_site_key", "theme": "light"})的对象。请参阅 grecaptcha.render 参数。 继承 如果未指定元素,请在元素上使用现有的 data-* 属性。参数的优先级高于特性。 |
grecaptcha.execute( opt_widget_id
。)
|
以编程方式调用 reCAPTCHA 检查。如果不可见的 reCAPTCHA 位于 div 而非按钮上,请使用此类型。 opt_widget_id 可选的微件 ID,如果未指定,则默认为创建的第一个微件。 |
grecaptcha.reset( ) opt_widget_id
。)
|
重置 reCAPTCHA 微件。 opt_widget_id 可选的微件 ID,如果未指定,则默认为创建的第一个微件。 |
grecaptcha.getResponse( opt_widget_id
。)
|
获取 reCAPTCHA 微件的响应。 opt_widget_id 可选的微件 ID,如果未指定,则默认为创建的第一个微件。 |
示例
在 onload 回调之后进行显式呈现
<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>
在客户端验证后调用隐形 reCAPTCHA 验证。
<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>