删除iframe link中的目标属性



我的一个页面上有一个iframe,显示外部站点(供应商产品)的内容。除了一些有target="_main"的链接外,其他的都很好。这些链接在新选项卡中打开。我需要做的是从iframe内的所有链接中剥离目标属性,以便所有链接都留在iframe内,而不是打开新窗口或选项卡。

似乎应该有一个简单的javascript解决方案。

如果我不能在iframe工作,那么我将被迫重新创建我的网站上的所有内容,这将是非常痛苦的.....至少可以这么说。

帮忙吗? ?

您需要访问外部站点的代码库才能动态修复此问题。在外部站点的代码库中要做的是检查站点是否在iframe内。如果它在iframe中,那么运行一个函数来删除链接上的所有目标属性。

//供应商产品页面

if (self !== top){

$ (' a ') .removeAttr("目标");

}//否则什么都不做

self !== top也就是说,如果我的网站不是最上面的窗口,那么返回true

我没有直接意识到。

然而,如果你可以在你的网站上使用脚本语言(如PHP或ASP),你可以直接从你的服务器上读取供应商的页面,做一个查找&替换它&然后渲染到你的网站上;可以在iframe中,也可以在你想要的其他地方。

编辑

有很多方法可以做到这一点,这取决于你对PHP配置的控制程度。看看这些资源& &;看看你能不能想出办法。如果没有,我建议你开始一个新的问题,特别关注你正在挣扎的是什么。

  1. http://php.net/manual/en/function.file-get-contents.php使用此方法,您必须注意页面上的提示:

如果启用了fopen包装器,则URL可以用作该函数的文件名。有关如何指定文件名的更多详细信息,请参阅fopen()。有关各种包装器的功能、使用说明以及它们可能提供的任何预定义变量的信息的链接,请参阅支持的协议和包装器。

  • http://php.net/manual/en/function.fsockopen.php再次提醒,注意警告&笔记。

  • http://php.net/manual/en/book.curl.php
  • 我个人已经写了一个类,使用fsockopen,因为它是最灵活的我的需求,但通常file_get_contents做的技巧,因为它是最简单的设置出3个选项,如果你有正确的包装器配置&您不需要开始使用SSL或有趣的协议。我不使用CURL是因为你必须安装一个库才能让它工作。我希望我的代码对于标准安装来说是可移植的。

    一些有用的链接:

      PHP从外部服务器读取文件
    <

    可能的例子/strong>

    $vendorUrl = isset( $_REQUEST['vendor'] ) ? $_REQUEST['vendor'] : 'www.default-vendor.com';
    $iframeContents = file_get_contents("http://$vendorUrl", false);
    exit str_replace( 'target="_main"', '', $iframeContents );
    

    然后你只需要把你的iframe指向你在服务器上保存这个脚本的任何页面&包含? vendor =www.vendor-url.com作为查询字符串

    如何给自己的iframe名称_main?

    <iframe name="_main" ...
    

    其他链接也应该在该iframe中打开。

    问候,马克斯

    最新更新