javascript - google - Error de referencia no detectado: grecaptcha no está definido
recaptcha v3 example (5)
¡Puede configurar la variable hl=en
al llamar a la API si el idioma le preocupa!
como tal:
<script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit&hl=en"></script>
Estoy usando recaptcha
v2
Recibo el siguiente error de vez en cuando (a veces no recibo el error y otras veces lo hago)
Uncaught ReferenceError: grecaptcha is not defined
Parece que debido a la solicitud interna de http. eso toma algún tiempo para obtener otro js recaptcha__en.js
. Mientras tanto el código de renderización real de grecaptcha
ejecuta.
Entonces, ¿cuál es la solución estándar para evitar este problema?
PD: por supuesto que estoy buscando otra solución que no sea setTimeout
A veces, la aplicación carga varias veces el script ''https://www.google.com/recaptcha/api.js
después de la actualización, asegúrese de que su aplicación no tenga múltiples <script async="" defer="" src="https://www.google.com/recaptcha/api.js"></script>
Mi problema se resolvió haciendo los siguientes cambios en el código del script (:
es decir, desde el camino interno
<script src=''static/js/recaptcha/api.js''></script>
a la ruta de Google externa es decir
<script src=''https://www.google.com/recaptcha/api.js''></script>
Recaptcha tiene una devolución de llamada onload
que se ejecutará una vez que se cargue recaptcha. Coloque su código dentro de esa función de devolución de llamada.
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>
Resolví esto ordenando el script de la siguiente manera
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>