我的一个页面上有一个iframe,显示外部站点(供应商产品)的内容。除了一些有target="_main"的链接外,其他的都很好。这些链接在新选项卡中打开。我需要做的是从iframe内的所有链接中剥离目标属性,以便所有链接都留在iframe内,而不是打开新窗口或选项卡。
似乎应该有一个简单的javascript解决方案。
如果我不能在iframe工作,那么我将被迫重新创建我的网站上的所有内容,这将是非常痛苦的.....至少可以这么说。
帮忙吗? ?
您需要访问外部站点的代码库才能动态修复此问题。在外部站点的代码库中要做的是检查站点是否在iframe内。如果它在iframe中,那么运行一个函数来删除链接上的所有目标属性。
//供应商产品页面
if (self !== top){
$ (' a ') .removeAttr("目标");
}//否则什么都不做
self !== top也就是说,如果我的网站不是最上面的窗口,那么返回true
我没有直接意识到。
然而,如果你可以在你的网站上使用脚本语言(如PHP或ASP),你可以直接从你的服务器上读取供应商的页面,做一个查找&替换它&然后渲染到你的网站上;可以在iframe中,也可以在你想要的其他地方。
编辑
有很多方法可以做到这一点,这取决于你对PHP配置的控制程度。看看这些资源& &;看看你能不能想出办法。如果没有,我建议你开始一个新的问题,特别关注你正在挣扎的是什么。- 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中打开。
问候,马克斯