หน้านี้จะอธิบายวิธีเปิดใช้และปรับแต่ง reCAPTCHA ที่ไม่แสดงในหน้าเว็บ
หากต้องการเรียกใช้ reCAPTCHA ที่ไม่แสดง คุณสามารถเลือกดำเนินการอย่างใดอย่างหนึ่งต่อไปนี้
- เชื่อมโยงคำถามกับปุ่มโดยอัตโนมัติ หรือ
- เชื่อมโยงปัญหากับปุ่มแบบเป็นโปรแกรม หรือ
- เรียกใช้ภารกิจแบบเป็นโปรแกรม
ดูวิธีปรับแต่ง reCAPTCHA แบบมองไม่เห็นได้ที่การกําหนดค่า เช่น คุณอาจต้องการระบุภาษาหรือตำแหน่งป้าย
โปรดดูที่การยืนยันคำตอบของผู้ใช้ เพื่อตรวจสอบว่าผู้ใช้แก้ไข CAPTCHA สำเร็จหรือไม่
เชื่อมโยงชาเลนจ์กับปุ่มโดยอัตโนมัติ
วิธีที่ง่ายที่สุดในการใช้วิดเจ็ต reCAPTCHA ที่ไม่แสดงในหน้าเว็บคือการรวมทรัพยากร JavaScript ที่จำเป็นและเพิ่มแอตทริบิวต์ 2-3 รายการในปุ่ม HTML แอตทริบิวต์ที่จำเป็นคือชื่อคลาส "g-recaptcha
", คีย์ของเว็บไซต์ในแอตทริบิวต์ data-sitekey
และชื่อของ JavaScript Callback ที่ใช้จัดการการป้อน CAPTCHA ในแอตทริบิวต์ 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>
สคริปต์ต้องโหลดโดยใช้โปรโตคอล HTTPS และสามารถรวมไว้ที่ใดก็ได้ในหน้าเว็บโดยไม่มีข้อจํากัด
เชื่อมโยงชาเลนจ์กับปุ่มหรือเรียกใช้ชาเลนจ์แบบเป็นโปรแกรม
การเลื่อนการเชื่อมโยงสามารถทําได้โดยระบุฟังก์ชัน Callback ของ onload และเพิ่มพารามิเตอร์ลงในทรัพยากร JavaScript ซึ่งทำงานเหมือนกับการทดสอบ reCAPTCHA ปกติ
เรียกใช้ชาเลนจ์แบบเป็นโปรแกรม
การเรียกใช้การยืนยัน reCAPTCHA แบบเป็นโปรแกรมทำได้โดยการแสดงผลคำตอบใน div ที่มีแอตทริบิวต์ data-size="invisible"
และเรียกใช้ execute แบบเป็นโปรแกรม
สร้าง div ด้วย
data-size="invisible"
<div class="g-recaptcha" data-sitekey="_your_site_key_" data-callback="onSubmit" data-size="invisible"> </div>
เรียก grecaptcha.execute จากเมธอด JavaScript
grecaptcha.execute();
เมื่อมีการเรียกใช้ Callback คุณสามารถเรียกใช้เมธอด
grecaptcha.render
จาก JavaScript API
การกำหนดค่า
พารามิเตอร์ทรัพยากร JavaScript (api.js)
พารามิเตอร์ | ค่า | คำอธิบาย |
---|---|---|
onload |
ไม่บังคับ ชื่อของฟังก์ชัน Callback ที่จะเริ่มทำงานเมื่อโหลดทรัพยากร Dependency ทั้งหมดแล้ว | |
render |
explicit onload |
ไม่บังคับ แสดงผลวิดเจ็ตอย่างชัดแจ้งหรือไม่ ค่าเริ่มต้นจะเป็น onload ซึ่งจะแสดงวิดเจ็ตในแท็ก g-recaptcha แรกที่พบ |
hl |
ดูรหัสภาษา | ไม่บังคับ บังคับให้วิดเจ็ตแสดงผลในบางภาษา ตรวจหาภาษาของผู้ใช้โดยอัตโนมัติหากไม่ได้ระบุ |
แอตทริบิวต์แท็ก g-recaptcha และพารามิเตอร์ grecaptcha.render
แอตทริบิวต์แท็ก g-recaptcha | พารามิเตอร์ grecaptcha.render | ค่า | ค่าเริ่มต้น | คำอธิบาย |
---|---|---|---|---|
data-sitekey |
คีย์เว็บไซต์ | คีย์เว็บไซต์ของคุณ | ||
data-badge |
ป้าย | ด้านล่างขวา ด้านล่างซ้าย ในบรรทัด | bottomright | ไม่บังคับ ปรับตำแหน่งป้าย reCAPTCHA "inline" ช่วยให้คุณจัดตำแหน่งด้วย CSS ได้ |
data-size |
ขนาด | มองไม่เห็น | ไม่บังคับ ใช้ในการสร้างวิดเจ็ตที่มองไม่เห็นซึ่งเชื่อมโยงกับ div และดำเนินการแบบเป็นโปรแกรม | |
data-tabindex |
tabindex | 0 | ไม่บังคับ ดัชนีแท็บของชาเลนจ์ หากองค์ประกอบอื่นๆ ในหน้าเว็บใช้ tabindex คุณควรตั้งค่าเพื่อให้ผู้ใช้ไปยังส่วนต่างๆ ได้ง่ายขึ้น | |
data-callback |
Callback | ไม่บังคับ ชื่อของฟังก์ชันการเรียกกลับที่จะดำเนินการเมื่อผู้ใช้ส่งคำตอบเรียบร้อยแล้ว ระบบจะส่งโทเค็น g-recaptcha-response ไปยัง Callback ของคุณ |
||
data-expired-callback |
การติดต่อกลับที่หมดอายุ | ไม่บังคับ ชื่อของฟังก์ชัน Callback จะทำงานเมื่อการตอบสนอง reCAPTCHA หมดอายุและผู้ใช้ต้องยืนยันอีกครั้ง | ||
data-error-callback |
การติดต่อกลับข้อผิดพลาด | ไม่บังคับ ชื่อของฟังก์ชันการเรียกกลับที่จะดำเนินการเมื่อ reCAPTCHA พบข้อผิดพลาด (โดยปกติคือการเชื่อมต่อเครือข่าย) และดำเนินการต่อไม่ได้จนกว่าการเชื่อมต่อจะได้รับการคืนค่า หากคุณระบุฟังก์ชันที่นี่ คุณมีหน้าที่แจ้งให้ผู้ใช้ทราบว่าควรลองอีกครั้ง | ||
เป็นแห่งๆ | เท็จ | ไม่บังคับ เพื่อให้เจ้าของปลั๊กอินไม่ต้องขัดขวางการติดตั้ง reCAPTCHA ที่มีอยู่ในหน้าเว็บ หากเป็นจริง อินสแตนซ์ reCAPTCHA นี้จะเป็นส่วนหนึ่งของพื้นที่รหัสแยกต่างหาก |
JavaScript API
วิธีการ | คำอธิบาย |
---|---|
grecaptcha.render (คอนเทนเนอร์
พารามิเตอร์
ใช้ต่อ
)
|
แสดงผลคอนเทนเนอร์เป็นวิดเจ็ต reCAPTCHA และแสดงผลรหัสของวิดเจ็ตที่สร้างขึ้นใหม่ container เอลิเมนต์ HTML สำหรับแสดงผลวิดเจ็ต reCAPTCHA ระบุรหัสของคอนเทนเนอร์ (สตริง) หรือองค์ประกอบ DOM เอง พารามิเตอร์ ออบเจ็กต์ที่มีพารามิเตอร์เป็นคู่คีย์=ค่า เช่น {"sitekey": "your_site_key", "theme": "light"} ดูพารามิเตอร์ grecaptcha.render ใช้ต่อ ใช้แอตทริบิวต์ data-* ที่มีอยู่ในองค์ประกอบหากไม่ได้ระบุพารามิเตอร์ที่เกี่ยวข้อง พารามิเตอร์จะมีความสําคัญเหนือกว่าแอตทริบิวต์ |
grecaptcha.execute(
|
เรียกใช้การตรวจสอบ reCAPTCHA โดยใช้โปรแกรม ใช้ในกรณีที่ reCAPTCHA ที่ไม่แสดงอยู่ใน div แทนที่จะเป็นปุ่มopt_widget_id รหัสวิดเจ็ต (ไม่บังคับ) โดยค่าเริ่มต้นจะเป็นวิดเจ็ตแรกที่สร้างขึ้นหากไม่ได้ระบุ |
grecaptcha.reset(
|
รีเซ็ตวิดเจ็ต reCAPTCHAopt_widget_id รหัสวิดเจ็ต (ไม่บังคับ) โดยค่าเริ่มต้นจะเป็นวิดเจ็ตแรกที่สร้างขึ้นหากไม่ได้ระบุ |
grecaptcha.getResponse(
|
รับการตอบกลับสําหรับวิดเจ็ต reCAPTCHAopt_widget_id รหัสวิดเจ็ต (ไม่บังคับ) โดยค่าเริ่มต้นจะเป็นวิดเจ็ตแรกที่สร้างขึ้นหากไม่ได้ระบุ |
ตัวอย่าง
การแสดงผลที่ชัดเจนหลังจาก Callback ที่โหลด
<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>