Я узнал, что с тех пор, как два дня назад многие люди получили ошибку:
grecaptcha.render is not a function
Ну, это работает для меня. Может, это кому-то поможет в
Я разбил его на части, чтобы вы могли легко прочитать:
mounted(){
if (typeof grecaptcha === "undefined") {
var script = document.createElement("script");
script.src = "https://www.google.com/recaptcha/api.js?render=explicit";
script.onload = this.renderWait;
document.head.appendChild(script);
} else this.render();
}
Если grecaptcha не загружен, я создам скрипт и буду ждать его загрузки.
Если так, то renderWait называется
renderWait() {
setTimeout(() => {
if (typeof grecaptcha !== "undefined" && typeof grecaptcha.render !== "undefined") this.render();
else this.renderWait();
}, 200);
},
Когда, наконец, grecaptcha отобразит его:
render() {
const recaptchaDiv = document.createElement('div');
recaptchaDiv.className = 'outside-badge';
document.body.appendChild(recaptchaDiv);
this.widgetId = grecaptcha.render(recaptchaDiv, {
sitekey: this.sitekey,
size: "invisible",
badge: this.badge || "bottomright",
theme: this.theme || "light",
callback: token => {
this.callback(token);
grecaptcha.reset(this.widgetId);
}
});
this.loaded = true;
},
Может быть, это поможет вам:)