Как установить положение значка с помощью reCAPTCHA v3? - PullRequest
0 голосов
/ 29 мая 2018

Я хотел бы использовать встроенный значок с v3, но нет документации по значку для v3.

Ответы [ 6 ]

0 голосов
/ 17 июля 2019

Просто установите его в разделе div

<div vc-recaptcha
badge="bottomleft"
>
</div>
0 голосов
/ 17 июля 2019

Вы можете включить это в свой sass или css, чтобы выровнять по левому краю и сохранить активную функцию наведения.

.grecaptcha-badge {
  width: 70px !important;
  overflow: hidden !important;
  transition: all 0.3s ease !important;
  left: 4px !important;
}

.grecaptcha-badge:hover {
  width: 256px !important;
}
0 голосов
/ 09 мая 2019

После выполнения вы можете переместить значок с помощью Javascript.Это исправит ошибку тайм-аута рекапчи в браузерах Firefox и Chrome.

grecaptcha.ready(function() {  
        grecaptcha.execute('sitekey', {actienter code hereon: 'loginpage'}).then(function(token) {
               /* Move Google Badge to your Div ID */
               jQuery('.grecaptcha-badge').appendTo("#g-badge-newlocation");
        });
    });
0 голосов
/ 04 декабря 2018

Вы можете сделать значок встроенным в V3, используя только Javascript, но он еще не задокументирован.


Установите для параметра render значение explicit и добавьте параметр onload для обратного вызова,onRecaptchaLoadCallback например.

<script src="https://www.google.com/recaptcha/api.js?render=explicit&onload=onRecaptchaLoadCallback"></script>

Затем настройте свой обратный вызов, как это так, и не забудьте ввести узел id / DOM, куда вы хотите, чтобы ваш значок пошел, в этом случае, идентификаторinline-badge.

<script>
    function onRecaptchaLoadCallback() {
        var clientId = grecaptcha.render('inline-badge', {
            'sitekey': '6Ldqyn4UAAAAAN37vF4e1vsebmNYIA9UVXZ_RfSp',
            'badge': 'inline',
            'size': 'invisible'
        });

        grecaptcha.ready(function() {
            grecaptcha.execute(clientId, {
                    action: 'action_name'
                })
                .then(function(token) {
                    // Verify the token on the server.
                });
        });
    }
</script>

Пример

Источник

0 голосов
/ 01 октября 2018

Я просто изменил CSS для класса grecaptcha-badge следующим образом:

.grecaptcha-badge { 
    bottom:25px !important; 
}
0 голосов
/ 28 сентября 2018

РЕДАКТИРОВАТЬ1: См. Ответ с использованием параметров render=explicit.Этот ответ все еще работает, но это было до того, как эта функция была задокументирована и не так чиста.


Мне удалось сделать это, поместив относительный блок и отсоединив в нем значок reCaptcha v3.Затем в контейнер вносятся некоторые корректировки стиля.

#grecaptcha-box {
    width: 260px;
    overflow: hidden;
    position: relative;
    height: 75px;
}
#grecaptcha-box .grecaptcha-badge {
    box-shadow: none !important;
}

Затем вы помещаете поле с вашим JavaScript.

<form>
    <!-- Rest of your form here... -->
    <input type="hidden" id="recaptcha-token"  name="recaptcha-token">
    <input type="hidden" id="recaptcha-action" name="recaptcha-action">
</form>

<div id="grecaptcha-box"></div>

<!-- Recaptcha v3 -->
<script src="https://www.google.com/recaptcha/api.js?render=xxxxxxxxxxxxxxxxxxxxxxxxxxxx"></script>
<script id="js-recaptcha-init">
const RECAPTCHA_PUBLIC_KEY = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx';
grecaptcha.ready(function() {
    // Remove badge from fixed place
    var gb = document.getElementsByClassName("grecaptcha-badge")[0];
    gb.style.position = 'absolute';
    document.getElementById('grecaptcha-box').appendChild(gb.cloneNode(true));

    gb.parentNode.removeChild(gb);

    // Do the normal recaptcha things...
    var grecaptcha_opts = {'action' : 'custom_action'};
    grecaptcha.execute(RECAPTCHA_PUBLIC_KEY, grecaptcha_opts)
        .then(function(token) {
            document.getElementById('recaptcha-token').value = token;
            document.getElementById('recaptcha-action').value = grecaptcha_opts.action;
        });
});
</script>
...