将target =“_ top”添加到fancybox iframe内的墨迹
我有一个页面设置,可以通过fancybox iframe访问。 如何在iframe的父窗口中加载fancybox iframe内的链接? 因此,如果用户单击该链接,它将重新加载页面并加载单击的链接。 如何在所有链接中添加target =“_ top”属性?
例如
$("iframe").on("load", function () { $("a").each(function() { $(this).attr('target', '_top'); }); })
假设您的子页面中有常规链接,例如:
This link opens GOOGLE
This link opens JSFIDDLE
This link opens STACKOVERFLOW
您可以使用fancybox afterShow
回调在父页面中为每个链接设置属性 onclick
。 然后,将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。
注意 :
- 我们需要在
.assign()
方法中传递this.href
,该方法对应于每个链接的href
值。 - 我们不需要在子页面中包含jQuery。
- 使用iframe 符合同源策略
请参阅演示: http : //www.picssel.com/playground/jquery/openURLfromChildPage_13apr14.html
如果您使用的是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值得更新。