Javascript FancyBox iFrame-在iFrame中链接以关闭FancyBox并在原始父页面中打开

Javascript FancyBox iFrame-在iFrame中链接以关闭FancyBox并在原始父页面中打开,javascript,jquery,fancybox,fancybox-2,Javascript,Jquery,Fancybox,Fancybox 2,我有一个FancyBox链接,可以打开FancyBox(lightbox)iFrame php页面。这个php页面上有链接,当点击关闭FancyBox灯箱并在原始父窗口中打开链接时,我想要任何链接。。。这是我到目前为止的代码 <a class="fancyimg" data-fancybox-type="iframe" onClick="$.fn.fancybox.close();" href="remote.php" >Launch Remote Control</a&

我有一个FancyBox链接,可以打开FancyBox(lightbox)iFrame php页面。这个php页面上有链接,当点击关闭FancyBox灯箱并在原始父窗口中打开链接时,我想要任何链接。。。这是我到目前为止的代码

   <a class="fancyimg" data-fancybox-type="iframe" onClick="$.fn.fancybox.close();" href="remote.php" >Launch Remote Control</a>

{literal}
<link rel="stylesheet" href="js/fancybox/source/jquery.fancybox.css?v=2.1.5" type="text/css" media="screen" />
<script type="text/javascript" src="js/fancybox/source/jquery.fancybox.pack.js?v=2.1.5"></script>

  <script type="text/javascript">
  $(".fancyimg").fancybox({
 'width'        : '30%',
 'height'       : '92%',
 'autoScale'        : false, 
 'type'         : 'iframe',
 'overlayShow'   : false,
 'transitionIn'  : 'elastic',
 'transitionOut' : 'elastic'
});


</script>

{literal}
$(“.fancyimg”).fancybox({
“宽度”:“30%”,
“高度”:92%,
“自动缩放”:false,
'type':'iframe',
“叠加显示”:错误,
“transitionIn”:“弹性”,
“transitionOut”:“弹性”
});

有什么想法吗?

您可以做的是在iframed页面(remote.php)的每个链接上设置一个
onclick
属性,该属性调用
parent
页面中的函数,并将其
href
作为参数传递

您可以在fancybox
afterShow
回调中动态执行此操作,因此无需在iframed页面中硬编码属性

然后,父页面中的函数应使用
$.fancybox.close()
方法关闭fancybox,并使用从iframed页面传递的URL重新加载页面

父页面中的代码:

请访问picssel.com上的,并自由探索源代码


不设置
onclick
属性的另一个(更干净的)选项是直接在
afterShow
回调中绑定
click
事件,如:

jQuery(document).ready(function ($) {
    $(".fancybox").fancybox({
        afterShow : function () {
            // bind a click event on each link of the iframed page
            // then call the closeFancybox and pass the corresponding href
            $(".fancybox-iframe").contents().find("a").on("click", function () {
                closeFancybox(this.href);
            });
        }
    })
}); // ready
请参见备选方案

重要信息:两种解决方案都受限制,因此假定两个页面属于同一个域


注意:这是针对fancybox v2.x的

只有在控制打开的页面并且两者都在同一个域中时,才能执行此操作。BYW中,代码中的FANYBOX API选项是V1.3.4,而不是兼容V2.XI对打开的页面进行控制,并且两者都在同一个域上,你能给我一个例子,说明我如何将它设置为工作?
jQuery(document).ready(function ($) {
    $(".fancybox").fancybox({
        afterShow : function () {
            // bind a click event on each link of the iframed page
            // then call the closeFancybox and pass the corresponding href
            $(".fancybox-iframe").contents().find("a").on("click", function () {
                closeFancybox(this.href);
            });
        }
    })
}); // ready