Javascript 在弹出窗口的父窗口中的弹出窗口中打开iframe的链接

Javascript 在弹出窗口的父窗口中的弹出窗口中打开iframe的链接,javascript,iframe,popup,Javascript,Iframe,Popup,我有一个指向pop中url的iframe iframe的url与我的应用程序是同一个域 iframe的页面有一些链接,我想在主窗口中打开它们,而不是在用户单击时弹出的窗口 我尝试了以下代码: $(document).ready(function (e) { var links = document.getElementsByTagName('a'); for (var i = 0; i < links.length; i++) { links[i].

我有一个指向pop中url的iframe

iframe的url与我的应用程序是同一个域

iframe的页面有一些链接,我想在主窗口中打开它们,而不是在用户单击时弹出的窗口

我尝试了以下代码:

    $(document).ready(function (e) {
    var links = document.getElementsByTagName('a');
    for (var i = 0; i < links.length; i++) {
        links[i].setAttribute('target', '_parent');
    }
    }); 
$(文档).ready(函数(e){
var links=document.getElementsByTagName('a');
对于(变量i=0;i
链接确实将目标作为父对象,但当我单击链接时,窗口将在iframe中打开。
我试着把目标从“家长”改为“家长”,但还是不起作用


有什么帮助吗?

如果iframe的内容是另一个域,那么针对它执行的JavaScript数量非常有限。你可以在这篇文章中了解更多的原因

我个人发现,如果使用正确的用例,使用API是一种有用的解决方法(例如,您必须能够让iframe内容提供商托管代码来处理消息)。它倾向于将我的works用例与其他软件公司的合作伙伴集成在一起

您可以在此处找到此方法的示例:

//父js
console.log('1-父');
var iframe=document.getElementById('iframe');
iframe.addEventListener(“加载”,函数(事件){
log('3-iframe加载时的父级');
iframe.contentWindow.postMessage('测试','*'))
},假);
iframe.contentWindow.addEventListener('message',函数(事件){
console.log('received message event from child')
console.log(事件数据);
});
//父html
父帧
//子js
console.log('2-child');
window.addEventListener('message',函数(事件){
console.log('4-on子消息')
log('child postMessage with*origin')
},假);
window.parent.postMessage('testfromchild','*'))
//子html
子框架

我不明白你的解决办法。你能解释一下吗?iframe和父窗口的内容都属于同一个域。iframe是“奇数”,很难使用。这就是为什么我建议使用
postMessage
API将信号从iframe发送到父应用程序(其中JS的行为与预期一致)在父应用程序中有一个事件侦听器来侦听iframes消息(在您的情况下,它可能包含您想要导航到的URL)当父级收到事件时,导航到消息中的URL。这更有意义吗?我的示例代码只是演示了从父对象向子对象以及从子对象向父对象发送消息。这里有一个类似的SO问题,它可能比我更好地传达消息。问题是我甚至无法收集iFrame的href。我确实通过执行var iframe=document.getElementById('iframeTest')获得了iframe元素;但是当我执行var innerDoc=(iframe.contentDocument)时?iframe.contentDocument:iframe.contentWindow.document;我收到一份文件,但正文是空的。有什么帮助吗?
// console output from parent 
"1 - parent"
"3 - parent on iframe load"
"recieved message event from child"
"testing"