附加到IFRAME中的链接URL

时间:2012-01-22 22:22:04

标签: javascript jquery html iframe append

我有一个带有IFRAME的页面。 IFRAME包含RSS文章的新闻源链接。我想附加到每篇文章的URL target =“_ blank”,以便每篇文章都在新窗口中打开,而不是在IFRAME中打开。我不想更改原始新闻源页面的布局或功能,所以我希望在点击时动态附加到URL。主页面和IFRAME页面位于同一个域中。任何帮助将不胜感激。

示例代码:

<html>
<head>
</head>
<body>
<iframe src="http://vangopainting.net/painting-tips?tmpl=component"></iframe>
</body>
<html>

正如您所看到的,上面的URL提取了一个剥离的Joomla页面,只显示了显示的内容。此IFRAME将嵌入到Facebook页面中,当用户点击链接时,它会将整个网站嵌入IFRAME,而不仅仅是文章。我希望在新窗口中打开,而不是IFRAME,方法是将URL =“_ blank”附加到URL,或者甚至将?tmpl = component附加到URL,以便Joomla删除除文章之外的所有内容。

编辑添加: 好的......这是我的代码:

<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script>
    $(function() {
        $('iframe').load(function(){
            $('a',$(this).contents()).each(function(){this.href = this.href + "?tmpl=component";});
        });
    });
</script>
</head>
<body>
<iframe src="link.html" width="100%" height="50px" frameborder="0" scrolling="no"></iframe>
<iframe src="http://vangopainting.net/painting-tips?tmpl=component" width="100%" height="100%" frameborder="0" scrolling="no"></iframe>
</body>
</html>

我在Facebook上添加了第一个用于测试目的的iframe。

link.html中的内容:

<html>
<head>
</head>
<body>
<a href="http://vangopainting.net/painting-tips/508-newest-mobile-app-matches-paint-color-instantly">http://vangopainting.net/painting-tips/508-newest-mobile-app-matches-paint-color-instantly</a>
</body>
</html>

以下是该页面的直接链接:http://vangopainting.net/fb/tabs/paintingtips/index.html 一切都按预期工作。

以下是Facebook页面的链接:https://www.facebook.com/pages/Van-Go-Painting-Inc/177992368936448?sk=app_366401100043274 第一个iframe的URL会按原样附加,但第二个iframe不受影响。

我不知道为什么这不起作用。

2 个答案:

答案 0 :(得分:1)

这应该适合你。

$('a',$('iframe').contents()).attr('target','_blank');

简而言之,它会抓取所有iframe的内容,找到他们的a代码,并应用相应的target属性。

在示例中的head标记内添加以下(未经测试的)代码段,以达到预期效果。

<script>
    $(function() {
        $('iframe').load(function(){
            $('a',$(this).contents()).attr('target','_blank');
        });
    });
</script>

上述代码段中发生的事件有很多等待。

  • 首先,我们等待页面按passing a callback function to $加载。我们希望等待页面加载,以便我们知道我们可以找到iframe s。
  • 执行该回调时,我们会找到所有iframe并附加一个不同的回调,以便在加载时调用。
  • 这个不同的回调是执行查找a代码并修改它们的实际工作的代码段。

答案 1 :(得分:0)

您可以使用.contents访问iframe的内容,然后使用.find在iframe中找到元素,然后使用each根据自己的喜好修改元素,因为您还没有提供任何代码所以我也要坚持理论答案