reCAPTCHA 2.0在Safari中无法显示(在Edge、Chrome和Firefox中可以正常工作)

10
我刚刚在我的网站中集成了Google的reCAPTCHA 2.0。它在Chrome,Firefox和Edge中按预期工作,但是在我的MacBook Pro上的Safari中无法使用/出现。

  • MacBook Pro:macOS Sierra版本10.12.2。
  • Safari:版本10.0.2(12602.3.12.0.1)

reCAPTCHA被用于一个类似这样的dhtmlXForm中...

...
{ type:"label", name:"myrecaptcha", label:"<div class=\"g-recaptcha\" data-sitekey=\"MY_KEY_HERE\"></div>", offsetLeft:320 },
...

在所有浏览器中,除了Safari,会生成这个...

enter image description here

但在Safari中它并未出现...

enter image description here

控制台没有错误。我已清除所有浏览器缓存。 api.js 行的位置紧接在闭合的 </head> 标签之前,就像 Google 的文档所说的那样。不确定还有什么别的尝试。

更新:在 Safari 中,当我检查应该显示 reCAPTCHA 的区域时,我只看到原始的 <div class="g-recaptcha" data-sitekey="MY_KEY_HERE"></div> ,里面没有任何内容。因此,它出于某种原因没有将 iframe 放入该 div 中。希望这可以帮助。

更新:我回来实现了 reCAPTCHA v2(3.5 年后),现在似乎在 Safari 中可以使用了。


如果您使用了广告拦截软件,请尝试关闭它... - Ani
Safari - 首选项 -> 安全性 -> 我取消了“阻止弹出窗口”的选项。但是没有效果。我没有安装其他广告拦截软件。 - gfrobenius
更新:在Safari中,如果我进入“开发”->“用户代理”->如果我选择Edge、Chrome(Win或Mac)、Firefox(Win或Mac),它就可以工作了。这是在Safari中,只需更改用户代理即可。也许这会帮助某人缩小此问题的范围,我不知道。 - gfrobenius
这不仅仅是针对你的网站 - 我发现其他一些网站在Chrome中可以正常使用验证码,但在Safari中却不能(这也是我来到这里的原因)。 - Jeremy Young
3个回答

0

1. $('#captcha-form script').remove();

'captcha-form' 是包含验证码的表单的ID。删除脚本标签,这样当Safari重新渲染它们时,脚本不会再次执行。由脚本创建的事件处理程序不在脚本标签中,因此它们可以保留。

2. 将reCAPTCHA配置文件中的链接从http更改为https

我刚想起来我最近在Formidable常规设置中也打开了“在表单中使用HTML5”。如果我取消选中该选项,则reCAPTCHA在Safari上可以正常工作。

因此,这表明您在表单中实现HTML5存在问题,可能只有在站点使用HTTPS时才会出现。

3. 请参考以下提供的链接获取更多详细信息 -

reCAPTCHA2.0故障排除

reCAPTCHA常见问题解答

Google reCAPTCHA 教程


对不起,我不明白。我的页面上没有任何ID为“captcha-form”的内容。我并没有创建一个普通的HTML表单,而是使用了dhtmlXForm。另外,我阅读了那篇文章,但没有找到“在表单中使用HTML5”这个设置,可能是一个过时的设置。我在原始问题中添加了一个更新 - gfrobenius

0

我在我的网站上遇到了同样的问题,但是在我的情况下是在Firefox浏览器中出现的。显然这是因为JavaScript被禁用了(即使在浏览器中启用了它!而且我在3台不同的电脑上测试过)。

我知道这是因为当我将reCaptcha的设置更改为支持不支持Javascript的浏览器时,它解决了我的问题。

要做到这一点,您可以“导航到{{link1:管理控制台}}并将安全性偏好滑块移动到“最容易为用户”。请记住,使用此设置,reCAPTCHA将无法使用其所有安全功能。”如{{link2:reCAPTCHA常见问题}}所述。

我希望这能帮助某人缩小问题范围。

PS:我没有足够的声望留下评论。


0

虽然这是一个老问题,但或许仍能帮到某些人。

我曾经遇到过与 Google Recaptcha 相关的同样问题:在 Chrome 和 Firefox 中运行良好,但在 Safari 和 Epiphany 中无法正常工作。

我通过替换一些旧的 JavaScript 代码解决了这个问题:

if( typeof Map !== "function" ) {
  function Map() {
    // own definition similar to https://dev59.com/RW855IYBdhLWcg3wm1q3#15739569
  }
}

现在我使用 function MyMap() { ... },验证码可以正常工作。


1
我今天回来实现了reCAPTCHA v2(3.5年后),现在似乎可以在Safari中正常工作,而无需进行任何更改。 - gfrobenius

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接