我尝试点击<iframe>
中的链接时,会在新标签页中打开链接,而不是<iframe>
。请注意,我无法控制人们通过<iframe>
查看的内容。
我试图用javascript做这件事,比如$('a').setAttribute('target','_blank');
但它对我不起作用。
我的HTML文档中也有<base target="_blank">
,这也没有做到。
这不可能吗?或者我只是在错误的地方寻找? 提前致谢!
答案 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 强>