Uncaught ReferenceError: grecaptcha не определен
я использую recaptcha
v2
иногда я получаю следующую ошибку (иногда я не получаю ошибку, а иногда я ее получаю)
Uncaught ReferenceError: grecaptcha is not defined
кажется, из-за внутреннего http-запроса. это занимает некоторое время, чтобы получить другой js recaptcha__en.js
. Между тем фактический код рендеринга grecaptcha
выполняет.
Итак, каково стандартное решение, чтобы избежать этой проблемы.?
PS : конечно, я ищу какое-то решение, кроме setTimeout
4 ответов
Recaptcha имеет onload
обратный вызов, который будет выполняться после загрузки recaptcha. Поместите свой код внутри этой функции обратного вызова.
https://developers.google.com/recaptcha/docs/display
<script>
function onloadCallback() {
/* Place your recaptcha rendering code here */
}
</script>
<script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit"></script>
Я решил это, заказав скрипт ниже способом
HTML-код
<div id="review_recaptcha"></div>
jQuery
<script type="text/javascript">
var review_recaptcha_widget;
var onloadCallback = function() {
if($('#review_recaptcha').length) {
review_recaptcha_widget = grecaptcha.render('review_recaptcha', {
'sitekey' : '<?php echo $site_key?>'
});
}
};
</script>
<script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit" async defer></script>
Вы можете установить hl=en
переменная при вызове api, если язык вас беспокоит!
такие как:
<script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit&hl=en"></script>
моя проблема была решена путем внесения следующих изменений в код скрипта (:
i.e от внутреннего пути
<script src='static/js/recaptcha/api.js'></script>
к внешнему пути google i.e
<script src='https://www.google.com/recaptcha/api.js'></script>