如何在新标签页中打开iframe中的所有链接

时间:2014-04-02 10:08:02

标签: javascript jquery html iframe

我尝试点击<iframe>中的链接时,会在新标签页中打开链接,而不是<iframe>。请注意,我无法控制人们通过<iframe>查看的内容。

我试图用javascript做这件事,比如$('a').setAttribute('target','_blank'); 但它对我不起作用。 我的HTML文档中也有<base target="_blank">,这也没有做到。

这不可能吗?或者我只是在错误的地方寻找? 提前致谢!

6 个答案:

答案 0 :(得分:11)

要在父窗口中加载页面上的所有链接,请使用:

<base target="_parent" />

否则在新窗口中使用:

<base target="_blank" />

答案 1 :(得分:8)

我希望如此:

$('a').setAttribute('target','_blank');

..失败(无声 - 因为jquery通常无声地失败)因为,如果iFrame的内容来自不同的域,则存在从包含页面操纵iFrame中的页面的访问问题。

那就是:如果您自己的页面来自域名(例如mysite.com),而iframe来自域名b(例如someothersite.com),那么网页浏览器的安全行为就是使用javascript来操纵iFrame内容将给出“访问被拒绝”错误。

如果你使用非jquery javascript,你会看到错误。从父页面可以看出:

window.frames["iFrameName"].getElementsByTagName("a")[0].target="_blank"

你会看到错误。

不幸的是,我不确定你能做些什么。故意停止包含另一个网站的网站,并在加载后更改内容,以便说出其他内容。

一种方法是在服务器上调用脚本(即同一个域)并传入URL。该脚本获取您所访问的页面的内容并将其反馈到您的浏览器,因此您将获得所需网页的内容,但它的地址位于您的网站内...例如,如果它是php:

http://yourdomain.com/getURL.php?url=http:www.google.com

注意那里的身份验证问题

答案 2 :(得分:2)

使用javascript

var links= document.getElementsByTagName('a');
for (var i=0; i<links.length; i++){
   links[i].setAttribute('target', '_top');
}

使用jquery

$('a').each(function() {
   var a = new RegExp('/' + window.location.host + '/');
   if (!a.test(this.href)) {
       $(this).attr("target","_top");
   }
});

答案 3 :(得分:1)

检查这个帮助我的解决方案:Make links inside an iframe open in a new window

或者你可以试试parent.window.open(&#34; {{your location}}&#34;);

答案 4 :(得分:1)

target='blank'替换为onclick='window.open();'

答案 5 :(得分:0)

使用$('a').attr('target','_blank');代替setAttribute ...

<强> FIDDLE