`
zzplovejava
  • 浏览: 6706 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
文章分类
社区版块
存档分类
最新评论

window.showModalDialog打开跨域的页面并取到返回值

 
阅读更多
主页面用window.showModalDialog的时候,如果直接打开其它系统的页面,这时候别人的页面在window.returnValue=1;这样返回值的时候,主页面是取不到返回值的,原因就是因为跨域了.
解决办法如下:
1,首先主页面testMain.jsp先打开一个中转页面,
<html>
  <head>
  </head>
  <body>
    <input type="button" value="test" onclick="test();"/>
  </body>
</html>
<script type="text/javascript">
function test() {
    var paramObj = new Object();
    //弹出模式窗口,集成页面
    var ret_Value = window.showModalDialog("testFrame.jsp",paramObj,"scroll:no;resizable:yes;Minimize:no;Maximize:yes;dialogHeight:700px;dialogWidth:1024px;");
    alert("返回值---" + ret_Value);  
}
</script>


2,中转页面testFrame.jsp中要有一个iframe,然后把其它系统要打开的页面(这里的例子就是http://192.168.1.120:8080/test.jsp)放在这个iframe中,这里用一个FORM来存放要提交的数据,代码如下:
<html>
  <body>
  <form id="page_interface_form" name="page_interface_form" method="post">
     <input type="hidden" value="测试数据11111111" name="data" />
  </form>
    <iframe name="page_interface_frame" width="100%" height="100%" ></iframe>
  </body>
</html>
<script type="text/javascript">
    //嵌入集成页面
    call_page_interface();    
    //在iframe中调用页面集成接口
    function call_page_interface(){
        document.getElementById("page_interface_form").action = "http://192.168.1.120:8080/test.jsp";
        document.getElementById("page_interface_form").target = 'page_interface_frame';
        document.getElementById("page_interface_form").submit();
    }
</script>
分享到:
评论
2 楼 YY008871 2013-09-13  
你这个嵌套的页面也就起个提交的作用吗。你提交的数据还是同一个域的页面上的值。没必要这么复杂的嵌套吧。
1 楼 YY008871 2013-09-13  
var paramObj = new Object();  这个是用来干嘛的?

相关推荐

Global site tag (gtag.js) - Google Analytics