繁体   English   中英

小时候打开fancybox(iframe)?

[英]Open fancybox(iframe) as a child?

我希望,如果可能的话,使用iframe打开一个fancybox作为父母的孩子。

是否可以打开iframe(使用fancybox构建)并使浏览器相信我已经使用window.open打开它,以便window.close()window.opener.location.reload()等函数仍然可以工作?

fancybox代码很简单:

$("#custom_alert").fancybox({
        'width'             : w,
        'height'            : h,
        'autoScale'         : false,
        'transitionIn'      : 'none',
        'transitionOut'     : 'none',
        'type'              : 'iframe',
        //'scrolling'         : 'no'
    }).trigger('click');

编辑:我不能使用如下功能:

function closePopup(){
     window.close();
     if(parent.jQuery().fancybox) {
      parent.jQuery.fancybox.close();
     }
}

我必须使用window.close()函数。

我的问题的一个修复也可以告诉我为什么我不能重写关闭函数,就像我做的警告或确认。

编辑2:感谢Raohmaru和JFK,看到小提琴工作后,我已经完成了我需要的功能,但是对我来说却是一件奇怪的事情:

工作代码,如果有其他人需要它是:

(function() {
  var proxied = window.close;
  window.close = function() {
    if(parent.jQuery().fancybox) {
        parent.jQuery.fancybox.close();
    }
    else
        return proxied.apply(this, arguments);
  };
})();

这适用于fancybox和window.open情况。

我的问题是:我在索引中包含一些.js文件:

overwrites
fancybox pack
general scripts

如果我把这个函数放在一般脚本中,它可以很好地工作,但如果我把它放在覆盖js(它应该在哪里)它不起作用(没有控制台错误,没有任何反应)。 我试过在包含上交换位置,但没有运气。

这就是我无法从头开始工作的原因,因为我总是把它包含在覆盖.js中。

你可以做的是验证如果页面已在fancybox中打开并执行正确的fancybox方法,否则只需使用常规的javascript方法(即window.close()

话虽如此,在打开的页面内(通过window.open()或fancybox)你可能有一个关闭它的功能

function closePopup(){
 window.close();
}

与关闭按钮/链接相关联

<a href="javascript:;" onclick="closePopup()" >Close Window</a>

肯定会关闭弹出窗口但不关闭fancybox,因此您可以添加以下内容:

function closePopup(){
 window.close();
 if(parent.jQuery().fancybox) {
  parent.jQuery.fancybox.close();
 }
}

这将适用于弹出窗口或fancybox。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM