2014-04-02 120 views
7

我试图使其在您点击中的链接时打开链接,而不是在中。请注意,我无法通过控制人们正在查看的内容。如何使iframe中的所有链接在新标签页中打开

我正在尝试使用javascript可能会这样做,如$('a').setAttribute('target','_blank'); 但它不适合我。 我也在我的HTML文档<base target="_blank">,这也没有伎俩。

这是不可能的吗?或者我只是在错误的地方搜索? 在此先感谢!

+1

是iframe的页面是从同一个域? –

+1

尝试parent.window.open(“{{your location}}”); –

+1

类似的问题? http://stackoverflow.com/questions/17128889/links-within-an-iframe-window-to-open-in-new-tab?rq=1 –

回答

7

我期望这样的:

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

..发生故障(静默 - 因为jquery一般都会失败),因为如果iFrame的内容来自不同的域,从包含页面操纵iFrame内页面的问题。这就是说:如果你自己的页面来自域名a(例如mysite.com),并且iframe来自域名b(例如someothersite.com),那么web浏览器的安全行为是这样的,即使用javascript来操纵iFrame内容会给“访问被拒绝”错误。

如果你要使用非jQuery的JavaScript,你会看到错误。从父页面,这似乎是这样的:

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

你会看到错误。

不幸的是我不确定你能做些什么。这是一个故意的事情,停止一个网站,包括另一个,并加载后更改内容,以便它说别的。

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

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

当心的问题与认证虽然有

+1

谢谢!它的工作原理 –

7

要加载网页上的所有链接的父窗口使用:

<base target="_parent" /> 

否则在新窗口中使用:

<base target="_blank" /> 
1

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

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

使用jQuery

FIDDLE

+1

你只是告诉他使用不同的JavaScript符号。这怎么解决这个问题呢?这可以更好地作为评论而不是答案。 – AlbatrossCafe

+0

我提高了,因为它确实修复了提议的JS。 OP有两个问题。 – Citizen

1

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

+0

Lol,这是我尝试过的所有其他解决方案实际运行的唯一的东西。非常感谢你! – odedta

1

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