我正在尝试通过 Fancybox 中的 ajax 加载表单。它工作得很好,一切正常。
我使用了 recaptcha (rails) 插件并在表单上获取了验证码。现在,当fancybox 加载时,它会被重定向到一个只有验证码的空页面。
我认为这是 iframe 和模态窗口的一些问题?
有没有人在fancybox 中的表单上加载了recaptcha?如果你能指出一个例子,我会帮助我。
感谢你的帮助...
我正在尝试通过 Fancybox 中的 ajax 加载表单。它工作得很好,一切正常。
我使用了 recaptcha (rails) 插件并在表单上获取了验证码。现在,当fancybox 加载时,它会被重定向到一个只有验证码的空页面。
我认为这是 iframe 和模态窗口的一些问题?
有没有人在fancybox 中的表单上加载了recaptcha?如果你能指出一个例子,我会帮助我。
感谢你的帮助...
我对fancybox也有同样的问题。我使用 recaptcha ajax API 解决了它: https ://developers.google.com/recaptcha/docs/display#AJAX
我有同样的问题,虽然只在 Safari 中(大概也是 Chrome)。它在 Firefox 中运行良好。它与 Ruby 无关(我使用 Grails),并且所有 jQuery 弹出窗口都会出现问题(我尝试过 blockUI、SimpelModal 和 ThickBox)。
据我所知,由于某种原因,当 jQuery 在 domtree 中移动 iframe(即 ReCaptcha 是什么)时,Webkit 决定将 iframe 内容加载为新页面。或者也许用 iframe 内容替换页面内容。
我很确定这是一个 Webkit 错误,我不知道是否有可能修复。
编辑:原来有一个修复可能:
$('#captcha-form script').remove();
'captcha-form' 是包含验证码的表单的 ID。删除脚本标签,以便在 jQuery 移动脚本后 Safari 重新渲染脚本时不会再次执行脚本。脚本创建的事件处理程序不在脚本标签中,因此它们仍然存在。
我认为 Safari 在重新呈现标签时会重新执行 javascript。当对话框打开时,模式对话框中的任何内容都会重新呈现。此外,我怀疑在重新渲染后,recaptcha 使用的 document.write 对它的位置感到困惑并搞砸了。
如果有人仍在寻找一个简单的解决方案,我已经设法通过将它作为 iframe 调用来让一个 recaptcha 在 fancybox 中工作
如果从类选择器中调用它:
<script>
$(document).ready(function() {
$(".example").fancybox({
fitToView : true,
autoSize : false,
openEffect : 'elastic',
closeEffect : 'elastic'
});
});
</script>
然后在你的 HTML
<a href="http://url.com/iframe" class="example fancybox.iframe>Captcha Fancybox</a>
或者,如果您以编程方式触发 fancybox,请执行以下操作:
$.fancybox({
width : '520px',
height : '230px',
autoSize : false,
openEffect : 'elastic',
closeEffect : 'elastic',
'href' : 'http://www.url.cc',
type : 'iframe'
});
在fancybox 中通过ajax 加载带有recaptcha 的表单的简单解决方案。
<%= recaptcha_tags ajax: true %>