Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/52.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 模式窗口内的recaptcha(fancybox)_Ruby On Rails_Modal Dialog_Lightbox_Fancybox_Recaptcha - Fatal编程技术网

Ruby on rails 模式窗口内的recaptcha(fancybox)

Ruby on rails 模式窗口内的recaptcha(fancybox),ruby-on-rails,modal-dialog,lightbox,fancybox,recaptcha,Ruby On Rails,Modal Dialog,Lightbox,Fancybox,Recaptcha,我试图通过fancybox中的ajax加载表单。它工作得很好,一切都很好 我使用了recaptcha(rails)插件,并在表单上获得了验证码。现在,当fancybox加载时,它会被重定向到一个只有验证码的空页面 我想这是iframe和模态窗口的一些问题 是否有人在fancybox中的表单上加载了recaptcha?如果你能给我举个例子,我会帮你的 感谢您的帮助……我也有同样的问题,尽管只是在Safari中(可能也是Chrome)。它在Firefox中运行良好。它与Ruby无关(我使用Grail

我试图通过fancybox中的ajax加载表单。它工作得很好,一切都很好

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

我想这是iframe和模态窗口的一些问题

是否有人在fancybox中的表单上加载了recaptcha?如果你能给我举个例子,我会帮你的


感谢您的帮助……

我也有同样的问题,尽管只是在Safari中(可能也是Chrome)。它在Firefox中运行良好。它与Ruby无关(我使用Grails),所有jQuery弹出窗口都会出现问题(我尝试过blockUI、SimpelModal和ThickBox)

据我所知,由于某种原因,当jQuery在domtree中移动iframe(这就是ReCaptcha)时,Webkit决定将iframe内容作为新页面加载。或者用iframe内容替换页面内容

我很确定这是一个Webkit错误,我不知道是否有可能修复

编辑:发现有一个可能的修复方法:

$(“#验证码表单脚本”).remove()

“验证码表单”是包含验证码的表单的id。删除脚本标记,以便在jQuery移动脚本后,Safari重新呈现脚本时不会再次执行脚本。脚本创建的事件处理程序不在脚本标记中,因此它们仍然存在


我认为Safari在重新呈现标记时会重新执行javascript。当对话框打开时,模式对话框中的任何内容都会重新呈现。此外,我怀疑在重新呈现后,recaptcha使用的document.write会混淆它的位置,并将其弄糟。

我在fancybox中也遇到了同样的问题。我使用recaptcha ajax API解决了这个问题:

如果有人仍在寻找一个简单的解决方案,我已经通过调用一个iframe在fancybox中获得了一个可以工作的recaptcha

如果从类选择器中调用它:

<script>
$(document).ready(function() {
     $(".example").fancybox({
          fitToView   : true,
          autoSize    : false,
          openEffect  : 'elastic',
          closeEffect : 'elastic'
     });
});
</script>

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

<%= recaptcha_tags ajax: true %> 

$.fancybox({
     width        : '520px',
     height       : '230px',
     autoSize     : false,
     openEffect   : 'elastic',
     closeEffect  : 'elastic',
     'href'       : 'http://www.url.cc',
     type         : 'iframe'
  });
<%= recaptcha_tags ajax: true %>