我想让在<iframe>
中点击链接时,链接会在新标签页中打开 - 而不是在<iframe>
中打开。请注意,我无法控制人们通过<iframe>
查看的内容。
我尝试使用JavaScript实现,例如$('a').setAttribute('target','_blank');
,但对我来说不起作用。
我在我的HTML文档中还有<base target="_blank">
,但那也没有起作用。
这是不可能的吗?还是我只是在错误的位置搜索? 先感谢您!
我想让在<iframe>
中点击链接时,链接会在新标签页中打开 - 而不是在<iframe>
中打开。请注意,我无法控制人们通过<iframe>
查看的内容。
我尝试使用JavaScript实现,例如$('a').setAttribute('target','_blank');
,但对我来说不起作用。
我在我的HTML文档中还有<base target="_blank">
,但那也没有起作用。
这是不可能的吗?还是我只是在错误的位置搜索? 先感谢您!
要在父窗口中加载页面上的所有链接,请使用:
<base target="_parent" />
否则在新窗口中打开:
<base target="_blank" />
我期待的是:
$('a').setAttribute('target','_blank');
如果 iFrame 中的内容来自不同的域名,那么就有访问问题,无法从包含页面操纵 iFrame 内部的页面,通常情况下 jQuery 会“悄无声息”地失败。
也就是说:如果您的页面来自域 a(例如 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
注意那里的身份验证问题
使用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");
}
});
将target='blank'
替换为onclick='window.open();'
使用 $('a').attr('target','_blank');
代替 setAttribute...