我有一个通过fancybox iframe访问的页面设置。fancybox iframe内部的链接如何加载到iframe的父窗口中?因此,如果用户单击该链接,它将重新加载页面并加载单击的链接。如何在所有链接中添加target="_top“属性?
例如:
$("iframe").on("load", function () {
$("a").each(function() {
$(this).attr('target', '_top');
});
})
发布于 2014-04-14 07:07:07
假设您的子页面中有常规链接,如:
<p>This link opens <a href="http://google.com">GOOGLE</a></p>
<p>This link opens <a href="http://jsfiddle.net">JSFIDDLE</a></p>
<p>This link opens <a href="http://stackoverflow.com">STACKOVERFLOW</a></p>
可以使用fancybox onclick
回调将属性afterShow
设置为父页面中的每个链接。然后,将parent.location.assign()
和$.fancybox.close()
设置为onclick
属性值。
这是您的父页面的代码:
jQuery(document).ready(function ($) {
$(".fancybox").fancybox({
type : "iframe",
afterShow : function () {
$(".fancybox-iframe").contents().find("a").attr("onclick", "parent.location.assign(this.href);parent.$.fancybox.close();")
}
});
}); // ready
现在,iframed页面上的每个链接都将关闭fancybox,并在父页面(顶部)加载引用的URL。
注意到:
this.href
方法中传递.assign()
,该方法对应于每个链接的href
值。参见演示:http://www.picssel.com/playground/jquery/openURLfromChildPage
发布于 2017-05-23 18:42:36
如果您使用的是Fancybox 3,您会希望这个稍微修改的版本:
jQuery(document).ready(function ($) {
$("[data-fancybox]").fancybox({
type : "iframe",
onComplete : function () {
$(".fancybox-iframe").contents().find("a").attr("onclick", "parent.location.assign(this.href);parent.$.fancybox.close();")
}
});
});
添加这个额外的答案,因为这个线程是关于在搜索中出现的唯一接近有用的东西。我觉得值得对当前版本的Fancybox进行更新。
https://stackoverflow.com/questions/23050139
复制相似问题