将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值得更新。