Javascript FancyBox iFrame-在iFrame中链接以关闭FancyBox并在原始父页面中打开
我有一个FancyBox链接,可以打开FancyBox(lightbox)iFrame php页面。这个php页面上有链接,当点击关闭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&
<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
作为参数传递
您可以在fancyboxafterShow
回调中动态执行此操作,因此无需在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