我有一个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”;工作正常
答案 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提供了一种受控机制,可以在正确使用时以安全的方式规避此限制。