问题描述
从 6 月 18 日开始,我们 Magento M1 项目上的 Recaptcha 已停止工作。 在recaptcha__en.js脚本函数Array.prototype.filter返回错误this.each不是函数,因为这不是Array,是NodeList,不能像这样过滤。 enter image description here
在项目方面,我们向 URL https://www.google.com/recaptcha/api.js 发送请求,该请求针对不同的国家/地区返回不同的响应。
对于 AU IP(也检查 IE IP)请求脚本 src as https://www.gstatic.com/recaptcha/releases/FDTCuNjXhn1sV0lk31aK53uB/recaptcha__en.js
对于欧盟地区,它使用 https://www.gstatic.com/recaptcha/releases/6OAif-f8nYV0qSFmq-D6Qssr/recaptcha__en.js
请告知如何解决问题,以便我们重新启用 Recaptcha。您能否还说是什么原因导致它停止工作?
解决方法
这里也一样,今天同时在magento 1中出现了这个问题,用这个js解决了:
if ('NodeList' in window) {
if (!NodeList.prototype.each && NodeList.prototype.forEach) {
NodeList.prototype.each = NodeList.prototype.forEach;
}
}
,
我也有同样的问题。我通过在您调用 google ready 函数之前添加这些代码行来解决它。 grecaptcha.ready(...
//fix google recaptcha
if ('NodeList' in window) {
if (!NodeList.prototype.each && NodeList.prototype.forEach) {
NodeList.prototype.each = NodeList.prototype.forEach;
}
}
并且错误已被删除。
,谢谢。它在 magento 1.5 上完美运行。我在 app.js 的“function startValidation()”的第一行插入这个。在我从根文件夹的“/vendor/.../Recaptcha/view/web/frontend/js/googleRecaptcha/src/”中播放“npm i”和“npm run build”之后,Voilà,太棒了。问候!!!