即使使用内联JavaScript函数,Google ReCAPTCHA也无法';t查找用户提供的功能:功能(响应)-

即使使用内联JavaScript函数,Google ReCAPTCHA也无法';t查找用户提供的功能:功能(响应)-,javascript,dom-events,recaptcha,react-google-recaptcha,Javascript,Dom Events,Recaptcha,React Google Recaptcha,我使用的是ReCAPTCHA V2版。在回调函数(即数据回调)上,我收到以下错误消息 ReCAPTCHA找不到用户提供的函数:函数(响应) 现在,我在web上看到的大多数帖子/解决方案都与一个本地回调函数有关,在g-recaptchadiv的data callback属性中引用该函数时,不会调用该函数。但是,在我的例子中,即使是内联函数也不会被调用。请看下图 截图-1: 事实上,当我使用JavaScript本机函数(如alert())时,它仍然不起作用 截图2: 这是我正在使用的JS代码。

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

ReCAPTCHA找不到用户提供的函数:函数(响应)

现在,我在web上看到的大多数帖子/解决方案都与一个本地回调函数有关,在g-recaptchadiv的data callback属性中引用该函数时,不会调用该函数。但是,在我的例子中,即使是内联函数也不会被调用。请看下图

截图-1:

事实上,当我使用JavaScript本机函数(如alert())时,它仍然不起作用

截图2:

这是我正在使用的JS代码。

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

第一次尝试-回调函数:


第二次尝试-回调函数:



如果您能帮助我理解为什么google API会以一种完全奇怪的方式响应,我将非常感谢您的帮助。

google ReCAPTCHA中的内联JavaScript函数永远不会工作。

<script src='https://www.google.com/recaptcha/api.js'></script>
如果这能节省某人的时间,我会把他的答案贴在这里

所有的功劳都归于他。非常感谢他帮助我理解Google ReCAPTCHA背后的JS。他在评论部分所说的关于Recaptcha的JS试图通过全局窗口对象中的函数名来识别函数,这是绝对正确的。因此,我的实现不起作用,也永远不会起作用(至少在V2版本中)

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

正确的方法

window.myCallBackFunction=function(){alert(“HI”);}
请注意:为了更清楚,在发布此问题之前,我也尝试过最初实现回调函数,但由于脚本的顺序,它没有起作用。感谢你在另一个问题上给了我很大的帮助,但是在我的解释之后。一开始,我是按照以下顺序实现的

方法不正确


window.myCallBackFunction=function(){alert(“HI”);}

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

你必须应用函数,而不是函数调用<代码>窗口。警报('hi')是属于函数体的函数调用。尝试创建一个包含该代码的函数,并在其中添加该函数名。谢谢@Christolytras的评论。如果你看第二个屏幕截图,我使用的是内联函数,它甚至不起作用。我在第一个try-callback函数HTML中添加了内联函数调用div。请看一看。另外,我确实在GoogleAPI调用的基础上创建了一个方法,它也不起作用。它是一样的。Recaptcha试图通过窗口上的函数名来识别该函数,因此在您的情况下,它会尝试验证类似以下内容的内容:
window[window.alert('hi');]
或此
window[function](resp…
并且它不会得到那样的内联函数。有一种使用
js:…
在html属性中编写函数的旧方法,但是它已经过时,您应该声明一个普通函数,然后只使用它的名称。请记住
数据回调
不是事件属性,它只是一个数据属性,它是vvalue是用来调用函数的。哦,天哪,你完全正确@Christolytras。非常感谢。它就像一个符咒一样工作。
<div class="g-recaptcha" data-sitekey="Please add your site key if you want to test" data-callback="Window.alert('hi');"></div>
<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>
<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>