1

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

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

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

有什么帮助???

4

3 回答 3

1

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

// 供应商产品页面

如果(自我!==顶部){

$('a').removeAttr('target');

} // 否则什么都不做

self !== top 与说如果我的网站不是最顶部的窗口则返回 true 相同。

于 2013-06-17T17:34:26.460 回答
0

不是我所知道的直接。

但是,如果您可以访问您网站上的脚本语言(如 PHP 或 ASP),您可以直接从您的服务器读取供应商的页面,对其进行查找和替换,然后将其呈现到您的网站上;无论是在 iframe 中,还是在你想要的其他地方。

编辑

有很多方法可以做到这一点,具体取决于您对 PHP 配置的控制程度。看看这些资源,看看你是否能弄清楚该怎么做。如果不是,我建议您开始一个新问题,专门针对您正在努力解决的问题。

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

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

  1. http://php.net/manual/en/function.fsockopen.php同样,请注意警告和注意事项。

  2. http://php.net/manual/en/book.curl.php

我个人编写了一个使用 fsockopen 的类,因为它对我的需求最灵活,但通常 file_get_contents 可以解决问题,因为如果您配置了正确的包装器并且您没有配置,那么它是 3 个选项中最简单的设置需要开始使用 SSL 或有趣的协议。我远离 CURL,因为你必须安装一个库才能让它工作。我更喜欢我的代码对于标准安装是可移植的。

一些有用的链接可能会有所帮助:

可能的例子

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

然后,您只需将 iframe 指向您将此脚本保存在服务器上的任何页面,并包含 ?vender=www.vendor-url.com 作为查询字符串。

于 2013-06-17T16:34:59.617 回答
0

给自己的 iframe 命名为 _main 怎么样?

<iframe name="_main" ...

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

问候, 马克斯

于 2013-06-17T17:15:26.407 回答