从框架引用窗口

时间:2015-12-30 11:38:52

标签: javascript jsp iframe

我有一个jsp,其中收取属于不同域的iframe。在iframe中,有一个JSP导航到一个导航到另一个JSP的servlet。

我想要的是在iframe的第二个JSP中对主JSP(加载iframe)进行更改(必须这样做,因为它们是独立的Web应用程序)。

我尝试了window.top,parent,并且所有引用了加载的JSP中的Servlet,并且在其他情况下已经获得了访问被拒绝的响应。

有没有选择这样做,还是我必须重新思考一切?

总结:

....
<br>< div id="xxxx">< /div>
<br>< div id="yyyy">
<br>< iframe src=(other domain)><br>
    Here I load a webpage. it navigates to a servlet and to a second JSP. This is the JSP to do the inner.html in the "xxxx" div 
<br>< /iframe>
<br>< /div>
....

编辑: 有关更多信息:

1.- window.top.getElementById(“xxxx”)...收到错误(不接受getElementById) 2.- window.top.location.href =“http://www.google.com”;工作正常

1 个答案:

答案 0 :(得分:1)

您可以在窗口框架之间使用消息。 iframe中的内容会向父框架发送消息,父框架必须明确接收该消息并采取措施。

使用

发送消息
parentWindowObject.postMessage(message, targetOrigin);

使用

收到
addEvent(window, "message", function(e){
    console.log(e.data);
});

通过这种方式,您可以发送包含父框架应该执行的操作的对象。请注意,不建议发送要评估的JS。

您可以在此处阅读有关在窗口之间发布/接收消息的更多信息: https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage

摘自页面:

  

window.postMessage方法可安全地启用跨源通信。通常,当且仅当执行它们的页面位于具有相同协议的位置(通常是https),端口号(443是https的默认值)和主机(模数文档)时,允许不同页面上的脚本相互访问。 .domain被两个页面设置为相同的值)。 window.postMessage提供了一种受控机制,可以在正确使用时以安全的方式规避此限制。