`
zzplovejava
  • 浏览: 6806 次
  • 性别: 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();  这个是用来干嘛的?

相关推荐

    解决window.showModalDialog跨域返回值

    至此,我们成功地解决了`window.showModalDialog`跨域返回值的问题。 总结起来,解决`window.showModalDialog`跨域返回值的关键步骤是: 1. 使用`window.showModalDialog`打开一个包含`iframe`的页面,`iframe`加载...

    window.showModalDialog模式对话框和 window.open的区别

    在实际应用中,选择`showModalDialog()` 或 `window.open()` 主要取决于你的需求。如果你需要一个用户必须处理完才能继续操作的界面,`showModalDialog()` 可能更合适。但考虑到其局限性和可能的兼容性问题,`window...

    Window.ShowModalDialog使用手册

    - 当使用`window.showModalDialog()` 或 `window.showModelessDialog()` 打开的对话框关闭时,可以通过父窗口中的 `vReturnValue` 变量获取到返回值。 - 在对话框窗口中设置返回值,可以使用 `window.returnValue` ...

    子窗体与父窗体传值示例js代码

    子窗体通常是由父窗体通过`window.open()`或`window.showModalDialog()`方法打开的新窗口,而父窗体则是创建子窗体的那个原始窗口。 在提供的代码示例中,主要涉及以下关键知识点: 1. `window.dialogArguments`:...

    showModalDialog用法

    当你在对话框内执行操作并关闭它时,可以通过`returnValue`将数据返回到调用`showModalDialog`的页面。 然而,需要注意的是,`showModalDialog`在现代Web开发中逐渐被弃用,因为它不支持跨域,且存在一些浏览器兼容...

    父子页面相互调用总结

    在`showModelessDialog`中,父页面可以传递参数给子页面,并通过返回值实现通信。然而,由于其兼容性问题(不被其他现代浏览器支持),现在已经被广泛弃用,开发者应转向更通用的解决方案。 接着是`window.open`,...

    showModalDialog技术文章

    在IT行业中,`showModalDialog`是一个非常特殊的浏览器API,主要用于弹出模态对话框,它在网页应用中起到了展示信息、获取用户输入或者执行特定任务的作用。这篇名为"showModalDialog技术文章"的博客文章可能详细...

    shouMoudalDialog参数说明.txt

    在Web开发领域,特别是早期的Internet Explorer浏览器版本中,`showModalDialog()` 和 `showModelessDialog()` 是两个非常实用的方法,用于在当前页面打开一个新的对话框。这两种对话框的主要区别在于是否具有模态...

    js关闭子窗体刷新父窗体实现方法

    此外,跨域安全策略也可能限制`window.opener`和`showModalDialog()`的使用,确保在同源策略允许的范围内操作,否则可能会引发安全问题。 总的来说,通过`window.opener`和`window.location.reload()`,我们可以...

Global site tag (gtag.js) - Google Analytics