Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从框架中引用窗口_Javascript_Jsp_Iframe - Fatal编程技术网

Javascript 从框架中引用窗口

Javascript 从框架中引用窗口,javascript,jsp,iframe,Javascript,Jsp,Iframe,我有一个jsp,其中包含一个属于不同域的iframe。在这个iframe中有一个JSP,它可以导航到一个servlet,而servlet可以导航到另一个JSP 我想要的是从iframes的第二个JSP(必须这样做,因为它们是独立的web应用程序)更改主JSP(其中加载了iframe) 我试图从加载的JSP中引用window.top、parent和all Servlet,在其他情况下获得了拒绝访问的响应 有什么选择吗?还是我必须重新考虑一切 总之: .... <br>< div

我有一个jsp,其中包含一个属于不同域的iframe。在这个iframe中有一个JSP,它可以导航到一个servlet,而servlet可以导航到另一个JSP

我想要的是从iframes的第二个JSP(必须这样做,因为它们是独立的web应用程序)更改主JSP(其中加载了iframe)

我试图从加载的JSP中引用window.top、parent和all 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=“”;工作正常

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

消息是使用

parentWindowObject.postMessage(message, targetOrigin);
使用

addEvent(window, "message", function(e){
    console.log(e.data);
});
这样,您就可以发送对象,并说明父帧应该做什么。请注意,不建议发送要评估的JS


您可以在此处阅读有关在窗口之间发布/接收邮件的更多信息:

本页摘录:

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


我试过了,但它再次拒绝了访问。在IE9(必须使用它)中,“开发者工具”再次引用Servlet。你能发布你用来发送消息的确切代码吗?不管域是什么,所有帐户都应该允许这样做。此外,对于IE9来说,依赖字符串而不是JS对象显然更好,因此在发送.parent.document.postMessage(“finished”,receivedURL)之前对其进行字符串化可能更安全;recivedURL是一个变量,包含从第一个jsp传递到所有页面的完整URL。通过一个警报,我可以看到这是一个正确的URL。问题是您引用的是父级的文档。这是不允许的。只需使用
parent.postMessage(“finished”,receivedURL)相同的响应。SCRIPT438:不接受'getElementById'MyServlet的对象,Líne 27字符4。它每次都引用****servlet