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

Dar*_*man 11 html javascript iframe jquery

我试图这样做,当你点击它中的一个链接<iframe>将打开一个新选项卡中的链接 - 而不是在<iframe>.请注意我无法控制人们通过观看的内容<iframe>.

我试图用javascript做这个,$('a').setAttribute('target','_blank'); 但是它对我不起作用.我也在我的HTML文档中<base target="_blank">,也没有做到这一点.

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

小智 14

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

<base target="_parent" />
Run Code Online (Sandbox Code Playgroud)

否则在新窗口中使用:

<base target="_blank" />
Run Code Online (Sandbox Code Playgroud)


use*_*054 8

我期待这个:

$('a').setAttribute('target','_blank');
Run Code Online (Sandbox Code Playgroud)

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

那就是:如果你自己的页面来自域名a(例如mysite.com),而iframe来自域名b(例如someothersite.com),那么网页浏览器的安全行为是这样的,使用javascript来操纵iFrame内容会给出一个"访问被拒绝"错误.

如果您使用非jquery javascript,您将看到错误.从父页面可以看出:

window.frames["iFrameName"].getElementsByTagName("a")[0].target="_blank"
Run Code Online (Sandbox Code Playgroud)

你会看到错误.

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

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

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

但请注意那里的身份验证问题