4

我正在尝试通过 Fancybox 中的 ajax 加载表单。它工作得很好,一切正常。

我使用了 recaptcha (rails) 插件并在表单上获取了验证码。现在,当fancybox 加载时,它会被重定向到一个只有验证码的空页面。

我认为这是 iframe 和模态窗口的一些问题?

有没有人在fancybox 中的表单上加载了recaptcha?如果你能指出一个例子,我会帮助我。

感谢你的帮助...

4

4 回答 4

6

我对fancybox也有同样的问题。我使用 recaptcha ajax API 解决了它: https ://developers.google.com/recaptcha/docs/display#AJAX

于 2012-04-11T18:56:42.707 回答
0

我有同样的问题,虽然只在 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 对它的位置感到困惑并搞砸了。

于 2011-06-10T10:18:25.657 回答
0

如果有人仍在寻找一个简单的解决方案,我已经设法通过将它作为 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'
  });
于 2013-08-27T00:01:14.050 回答
0

在fancybox 中通过ajax 加载带有recaptcha 的表单的简单解决方案。

<%= recaptcha_tags ajax: true %> 
于 2014-04-23T07:07:40.280 回答