我浏览了我能找到的所有其他帖子,但没有一个为我解决了这个问题。我在文档头中仅调用了ReCaptcha API:
<script src="https://www.google.com/recaptcha/api.js?hl=he-IL&onload=onloadCallback&render=explicit" type="text/javascript"></script>
然后紧随其后
var onloadCallback = function() {
grecaptcha.render("recaptcha2", {
sitekey: "6LendPIUAAAAAGQqB_2tq8fpgdGfBnEQA3v-CB0g",
theme: "light"
});
};
并且我在控制台中收到以下错误:
recaptcha__iw.js:60 Uncaught (in promise) Error: reCAPTCHA placeholder element must be an element or id
at mv (recaptcha__iw.js:60)
at Object.render (mootools-core.js:88)
at onloadCallback (register:56)
这是我的实时页面:https://www.tofesyashir.co.il/register
我尝试更改订单。我尝试将异步延迟添加到脚本调用中,但没有任何帮助。
而且,很奇怪,如果我手动调用grecaptcha.render,即使我在页面中100%存在的ID上使用它,也会再次触发该错误。由于某种原因,它根本不会在任何div上呈现。
你们怎么看?
查看正在获取异常的堆栈跟踪,实际上调用的.render()
方法来自mootools:
Uncaught (in promise) Error: reCAPTCHA placeholder element must be an element or id
at mv (recaptcha__iw.js:60)
at Object.render (mootools-core.js:88)
at onloadCallback (register:56)
由于您使用的mootools很小,所以我不能确切地说出哪里出了问题。但是,在我看来,好像是在该方法中完成了一些参数重新绑定,并且很可能这会导致以某种方式最终将reCaptcha方法最终调用的其他东西分配给第一个prepremeter。
所以我尝试从本地副本中从您的网页中删除mootools-确实可以解决问题,reCaptcha在mootools消失后仍能正常工作。
也有一个针对此的错误报告:https://github.com/google/recaptcha/issues/376。此处提供的链接可导致在相关的buig中发布解决方案:手动更新mootools似乎可以解决此问题。