即使使用内联 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>
我希望它能在将来帮助像我这样的人。
我使用的是 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>
我希望它能在将来帮助像我这样的人。