Новый Google reCaptcha: как изменить текст "Я не робот"
Я установил последний инструмент reCaptcha Google на нашем сайте йоги. Теперь пользователи запутались в тексте "Я не робот", который появляется рядом с этим флажком.
Большинство наших пользователей не знают, что означает слово "робот" в этом контексте, и они считают, что форма нарушена. Они также чувствуют себя менее безопасными, используя нашу форму, поскольку странно видеть слово "робот" на веб-сайте йоги.
Как изменить текст "Я не робот" на что-то еще, что пользователи понимают?
В этом вопросе появляются молчание...
Кроме того, похоже, что содержимое reRecaptcha полностью заблокировано с помощью удаленных JS и CSS. Я безуспешно пытался использовать следующий javascript для изменения текста для Googles recaptcha-anchor-label
:
<script type="text/javascript">
$(document).ready(function () {
$("#recaptcha-anchor-label").text("Something different.");
});
</script>
Ответы
Ответ 1
Возвращаясь к этому старому вопросу - теперь существует невидимая версия виджета reCAPTCHA, которая позволяет вам самостоятельно разрабатывать пользовательский интерфейс. Вы можете привязать выполнение вызова к созданной вами кнопке или вызвать ее программно в фоновом режиме.
Я цитирую страницу документации здесь для быстрого ознакомления, вы можете прочитать больше об этом здесь.
Необходимыми атрибутами являются имя класса "g-recaptcha", ключ вашего сайта в атрибуте data-sitekey и имя обратного вызова JavaScript для обработки завершения капчи в атрибуте data-callback.
Руководитель:
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
<script>
function onSubmit(token) {
document.getElementById("demo-form").submit();
}
</script>
Тело:
<form id='demo-form' action="?" method="POST">
<button class="g-recaptcha" data-sitekey="your_site_key" data-callck='onSubmit'>Submit</button>
<br/>
</form>
Ответ 2
В Google Recaptcha можно изменить "Я не робот" на другом языке, используя коды языков для параметра hl script.
Вот как вы заставляете испанский язык, например:
<script type="text/javascript" src="https://www.google.com/recaptcha/api.js?hl=es">
Источник: Документы Google ReCaptcha
Ответ 3
В настоящее время невозможно использовать свой инструмент. Если вы хотите использовать другой метод остановки роботов: удалите reCaptcha и используйте что-то, что у вас есть, возможно, простой рандомизированный вопрос и ответ, который относится к йоге.
Ответ 4
Вы не можете изменить этот конкретный текст, потому что он относится к третьей стороне iframe
, хотя есть обходное решение, которое выполняет именно то, что просит ОП.
Вы можете добавить новый div
в родительский div
, который вы можете контролировать, выравнивать и перекрывать его над текстом ярлыка, учитывая, что в Captcha Google всегда фиксированный размер. Поэтому в соответствии с документацией, учитывая, что у вас может быть основной Captcha div
в вашем коде с class="g-recaptcha"
, вы просто выполните:
$('.g-recaptcha').append('<div id="new_label"></div>');
$('#new_label').text("My own text");
$('#new_label').css({"position":"absolute", "width":"160px", "top":"27px", "left":"53px", "background-color":"#f9f9f9"});
работает:)
![введите описание изображения здесь]()
Ответ 5
Это невозможно, потому что Same Origin Policy запрещает любой script (который на вашем сайте) пытаться получить доступ к iframe ( captcha), который имеет другое происхождение (сервер Google).
У нас не должно быть проблем с запуском кода ниже, если у нас есть оба сервера:)
$( ".g-recaptcha > div > div > iframe" ).contents().find( "#recaptcha-anchor-label" ).text('Custom Text');
Ответ 6
Я использовал капчу на стороне клиента, вот мой code.its, который отлично работает для моего портала.
this.canvas = document.getElementById( 'myCanvas' ) as HTMLCanvasElement;
var context = this.canvas.getContext( '2d' );
context.clearRect( 0, 0, this.canvas.width, this.canvas.height );
var alpha = [];
alpha = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H','J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'm', 'n', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
'2', '3', '4', '5', '6', '7', '8', '9'];
var i;
for ( i = 0; i < 6; i++ ) {
var a = alpha[Math.floor( Math.random() * alpha.length )];
var b = alpha[Math.floor( Math.random() * alpha.length )];
var c = alpha[Math.floor( Math.random() * alpha.length )];
var d = alpha[Math.floor( Math.random() * alpha.length )];
var e = alpha[Math.floor( Math.random() * alpha.length )];
var f = alpha[Math.floor( Math.random() * alpha.length )];
var g = alpha[Math.floor( Math.random() * alpha.length )];
}
this.captchaCode = a + ' ' + b + ' ' + ' ' + c + ' ' + d + ' ' + e + ' ' + f + ' ' + g;
var ctext = this.captchaCode;
this.loginForm.controls['captcha'].setValue( this.captchaCode.replace( /\s/g, "" ) );
Вот я рисую холст изображения
/*Text to image captcha */
var imageObj = new Image();
imageObj.onload = function() {
context.drawImage( imageObj, 0, 0 );
context.font = "24px arial";
context.fillText( ctext, 84, 32 );
};
imageObj.src = 'assets/modules/dummy-assets/common/img/captcha2.jpg';