Fancy Box - 关闭iframe弹出窗口时如何刷新父页面?

dav*_*ave 13 jquery fancybox

当我关闭Fancy Box弹出框架时,我希望我的父页面刷新.我在弹出窗口中有一个登录页面,所以我需要刷新父页面以在Fancy Box关闭时显示新的登录状态.


我可以在没有iFrame代码的情况下使用它:

<script type="text/javascript">
 $(document).ready(function() {
  $("a.iframeFancybox1").fancybox({
   'width': 800,
   'height': 450,   
   'onClosed': function() {   
     parent.location.reload(true); 
    ;}
   });
 });
</script>
Run Code Online (Sandbox Code Playgroud)

但我无法使用iFrame代码:

<script type="text/javascript">
 $(document).ready(function() {
  $('a.iframeFancybox1').fancybox({
   'width': 800,
   'height': 450,
   'type' : 'iframe'
   'onClosed': function() {
     parent.location.reload(true); 
    ;}
   });
 });
</script>
Run Code Online (Sandbox Code Playgroud)

问题与这条线有关:


'type' : 'iframe'?
Run Code Online (Sandbox Code Playgroud)

一旦我添加该行,弹出窗口就会停止工作.


任何人都可以建议一个解决方案,我如何iframe在Fancy Box中弹出一个弹出框,并在框关闭时仍然可以刷新父页面?谢谢!

小智 29

$(".fancybox").fancybox({
    type: 'iframe',
    afterClose: function () { // USE THIS IT IS YOUR ANSWER THE KEY WORD IS "afterClose"
        parent.location.reload(true);
    }
});
Run Code Online (Sandbox Code Playgroud)

或者:

转到你的jquery.fancybox.js文件并转到第1380行它看起来像这样并添加parent.location.reload(true);

afterClose: function (opts) {
    if (this.overlay) {
        this.overlay.fadeOut(opts.speedOut || 0, function () {
            $(this).remove();
            parent.location.reload(true);
        });
    }
    this.overlay = null;
}
Run Code Online (Sandbox Code Playgroud)

  • 使用这种方法,您正在改变所有Fancybox的行为,这在大多数情况下可能不适合. (3认同)

小智 10

$(".fancybox").fancybox({
            'width'             : '75%',
            'height'            : '65%',
            'autoScale'         : false,
            'transitionIn'      : 'none',
            'transitionOut'     : 'none',
            'type'              : 'iframe',
            'hideOnOverlayClick': false,
            'onClosed'          : function() {
                                  parent.location.reload(true);
                                  }
        });
Run Code Online (Sandbox Code Playgroud)


Vov*_*kin 2

对我来说,下一个代码工作正常:

$("a.ic-edit").fancybox({
            'width'     : '65%',
            'height'    : '85%',
            'autoScale'     : false,
            'titleShow' : false,
            'transitionIn'  : 'no',
            'transitionOut' : 'no',
            'scrolling'     : 'no',
            'type'          : 'iframe',
            onCleanup   : function() {
                return window.location.reload();
            }
       });
Run Code Online (Sandbox Code Playgroud)

我不能准确地说,但也许是使用“onCleanup”的原因(实际上我没有尝试使用onClosed)。