即使使用内联 JavaScript 函数 - Google ReCAPTCHA 也找不到用户提供的函数:函数(响应) -

Even with the inline JavaScript function - Google ReCAPTCHA couldn't find user-provided function: function (response) -

我使用的是 ReCAPTCHA V2 版本。在回调函数(即 data-callback)上,我收到以下错误消息。

ReCAPTCHA couldn't find user-provided function: function (response)

现在,我在网上看到的大多数 posts/solutions 都与本地回调函数有关,在 data-callback[ 中引用时不会调用该函数=45=] g-recaptcha div 的属性。但是,就我而言,即使是内联函数也不会被调用。请看下图。

截图一:

事实上,当我使用 JavaScript 原生函数如 alert() 时,它仍然无法正常工作。

截图2:

这是我使用的JS代码。

<script src='https://www.google.com/recaptcha/api.js'></script>

第一次尝试-回调函数:

<div class="g-recaptcha" data-sitekey="Please add your site key if you want to test" data-callback="function (response) { alert('working: ', response);}"></div>

第二次尝试-回调函数:

<div class="g-recaptcha" data-sitekey="Please add your site key if you want to test" data-callback="Window.alert('hi');"></div>

如果您能帮助我理解为什么 google API 以完全奇怪的方式响应,我将不胜感激。

Google 中的内联 JavaScript 函数 ReCAPTCHA 将永远无法工作。

如果可以节省一些人的时间,我会在这里发布他的答案。

所有功劳归于@Christos Lytras。非常感谢他帮助我理解 Google ReCAPTCHA 背后的 JS。他在评论部分关于 Recaptcha 的 JS 试图通过其在全局 window 对象中的名称来识别该函数的说法是绝对正确的。因此,我的实现没有工作并且永远不会工作(至少在 V2 版本中)。

在我尝试实现内联函数时的所有解决方案中,它被读取为 window[function (){}]window[Window.alert('hi');],这是不正确的 JS 语法。因此,当我按照以下方式尝试时,它非常有效。

正确做法

<script>window.myCallBackFunction = function() { alert("HI"); }</script>
<script src='https://www.google.com/recaptcha/api.js'></script>
<div class="g-recaptcha" data-sitekey="XXX" data-callback="myCallBackFunction" ></div>

请注意:为了更清楚起见,我还尝试在发布此问题之前最初实现回调函数,但由于脚本的顺序,它没有起作用。感谢 这个回答 对另一个问题的帮助,但在 @Christos Lytras 的解释之后。一开始,我是按以下顺序实现的。

方法不正确

<script src='https://www.google.com/recaptcha/api.js'></script>
<script>window.myCallBackFunction = function() { alert("HI"); }</script>
<div class="g-recaptcha" data-sitekey="XXX" data-callback="myCallBackFunction" ></div>

我希望它能在将来帮助像我这样的人。