将 target=“_top” 添加到 fancybox iframe 内的墨迹

Posted

技术标签:

【中文标题】将 target=“_top” 添加到 fancybox iframe 内的墨迹【英文标题】:Add target=“_top” to ink that is inside the fancybox iframe 【发布时间】:2014-05-27 19:48:37 【问题描述】:

我有一个通过fancybox iframe 访问的页面设置。 fancybox iframe 中的链接如何加载到 iframe 的父窗口中?所以如果用户点击链接,它会重新加载页面并加载点击的链接。如何为所有链接添加 target="_top" 属性?

例如

$("iframe").on("load", function () 
    $("a").each(function() 
      $(this).attr('target', '_top');
   );
) 

【问题讨论】:

【参考方案1】:

假设在您的子页面中有常规链接,例如:

<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://***.com">***</a></p>

您可以使用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

现在,iframe 页面上的每个链接都会关闭 fancybox 并在父(顶部)页面中加载引用的 URL。

注意事项

我们需要在.assign()方法中传递this.href,对应每个链接的href值。 我们不需要在子页面中包含 jQuery。 使用 iframe 需要遵守 Same-origin policy

查看演示:http://www.picssel.com/playground/jquery/openURLfromChildPage_13apr14.html

【讨论】:

感谢您的回复。如何不将此代码用于我的课程(.ajax-processed) @zhe:什么意思?如果您对不同类型的内容使用相同的 fancybox 代码,您可以设置一个条件以将代码仅应用于 iframe。这就是你想要的吗? 对不起,我不懂英语。我用谷歌翻译。我需要打开父(顶部)页面中的所有链接。您的代码确实有效。但有些链接在 iframe screenshot 中打开 @zhe 好吧,在你的问题中添加这些链接的相关 html/js 代码,否则我猜不出你在做什么。【参考方案2】:

如果您使用的是 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 的当前版本值得更新。

【讨论】:

以上是关于将 target=“_top” 添加到 fancybox iframe 内的墨迹的主要内容,如果未能解决你的问题,请参考以下文章

target的属性

关于HTML中target属性

HTML问题解决-退出登录后,页面只有部分刷新到登录界面

servlet实现类似target="_top"功能

target属性打开方式

HTML中 target属性是啥意思?准确点