不可见的 reCaptcha iframe 不显示,表格卡住
Invisible reCaptcha iframe not showing, form stuck
我正在我的网站上加载两个脚本:
<script src="scripts/my_site.js"></script>
<script src="https://www.google.com/recaptcha/api.js" async="" defer=""></script>
其中 my_site.js
看起来像这样:
... many other functions, not nested
function captachaCallback() {
console.log("Captcha");
}
... other functions
然后在我的表单中使用:
<button id="btnSubmit" class="g-recaptcha" data-sitekey="my_key" data-callback="captachaCallback">Send</button>
每当我按下按钮时,会出现白色 half-transparent 覆盖空白 div,但什么也没有发生(控制台消息没有出现)并且表单卡住了。
我正在使用最新的Chrome。
提前致谢
你没有渲染验证码。
一旦用户通过向 data-callback
上指定的函数发送回调来完成验证码,提交按钮将尝试验证验证码的响应。由于您尚未创建组件,它会陷入循环。
- 提交按钮不能与您加载验证码的标签相同。您需要在空标签中呈现验证码。
而不是:
<button id="btnSubmit" class="g-recaptcha" data-sitekey="my_key" data-callback="captachaCallback">Send</button>
渲染如下:
<div id="captcha_element" class="g-recaptcha" data-sitekey="my_key" data-callback="captachaCallback"></div>
- 将其包装在一个表单中。你已经有了,修改一下就可以了
因为您指定了 运行 验证码完成后的功能,所以您无需担心提交按钮。
结构应如下所示:
<form action="?" method="POST">
/// The other elements in your form
/// ...
<div id="captcha_element" class="g-recaptcha" data-sitekey="my-key" data-callback="captachaCallback"></div>
<br/>
<input id="btnSubmit" type="submit" value="Submit">
</form>
另外一定要查看文档 ;)
我怀疑该元素超出了可见范围。那么您可以尝试将 data-badge="inline"
添加到 html
中的 recaptcha 元素吗
<button id="btnSubmit" class="g-recaptcha" data-sitekey="my_key" data-badge="inline" data-callback="captachaCallback">Send</button>
希望对您有所帮助。
问题是我的 CSS 设置影响了我网站上的所有 div。
div { overflow: hidden; }
显然,这会使带有验证码测试的弹出窗口 window 不可见。
删除此设置解决了问题。
我正在我的网站上加载两个脚本:
<script src="scripts/my_site.js"></script>
<script src="https://www.google.com/recaptcha/api.js" async="" defer=""></script>
其中 my_site.js
看起来像这样:
... many other functions, not nested
function captachaCallback() {
console.log("Captcha");
}
... other functions
然后在我的表单中使用:
<button id="btnSubmit" class="g-recaptcha" data-sitekey="my_key" data-callback="captachaCallback">Send</button>
每当我按下按钮时,会出现白色 half-transparent 覆盖空白 div,但什么也没有发生(控制台消息没有出现)并且表单卡住了。
我正在使用最新的Chrome。
提前致谢
你没有渲染验证码。
一旦用户通过向 data-callback
上指定的函数发送回调来完成验证码,提交按钮将尝试验证验证码的响应。由于您尚未创建组件,它会陷入循环。
- 提交按钮不能与您加载验证码的标签相同。您需要在空标签中呈现验证码。
而不是:
<button id="btnSubmit" class="g-recaptcha" data-sitekey="my_key" data-callback="captachaCallback">Send</button>
渲染如下:
<div id="captcha_element" class="g-recaptcha" data-sitekey="my_key" data-callback="captachaCallback"></div>
- 将其包装在一个表单中。你已经有了,修改一下就可以了
因为您指定了 运行 验证码完成后的功能,所以您无需担心提交按钮。
结构应如下所示:
<form action="?" method="POST">
/// The other elements in your form
/// ...
<div id="captcha_element" class="g-recaptcha" data-sitekey="my-key" data-callback="captachaCallback"></div>
<br/>
<input id="btnSubmit" type="submit" value="Submit">
</form>
另外一定要查看文档 ;)
我怀疑该元素超出了可见范围。那么您可以尝试将 data-badge="inline"
添加到 html
<button id="btnSubmit" class="g-recaptcha" data-sitekey="my_key" data-badge="inline" data-callback="captachaCallback">Send</button>
希望对您有所帮助。
问题是我的 CSS 设置影响了我网站上的所有 div。
div { overflow: hidden; }
显然,这会使带有验证码测试的弹出窗口 window 不可见。
删除此设置解决了问题。