日期:2014-05-18  浏览次数:20368 次

父子窗口函数调用问题!
首先有两个网页,起始页名为index.aspx(父窗口),通过单击父窗口的按钮,以模式对话框的形式打开一个子窗口(b.aspx),现在在b.aspx将要关闭时想调用index.aspx中用Javascript写好的一个函数,现在要如何实现?
现贴出我的部份代码请大家帮忙想想办法:
        index.aspx中调用子窗口的函数如下:
              string   result   =   " ";
                result   +=   " <script> ";
                result   +=   "if(window.showModalDialog){var   result=window.showModalDialog( ' "   +   "b.aspx "   +   " ',window);} ";
                result   +=   "else{var   result=window.open( ' "   +   "b.aspx "   +   " ',\ "mcePopup\ ", 'modal=yes,dialog=yes,width=400,height=450 '); ";
                result   +=   "result.focus();} ";
                result   +=   " </script> ";
              Response.Write(result);
        在b.aspx(子窗口)中关闭对话框之前我要调用在index.aspx的 <head> 部份的一个Javascript函数如名为a(row);我的代码如下,可是没有成功请大家帮帮忙!
            Response.Write( " <script> ");
                Response.Write( "if(window.showModalDialog){var   k=window.dialogArguments;alert(k);k.eval(\ "a()\ ");alert(2);window.close();} ");
            Response.Write( "else{window.opener.a(123);window.close();} ");
               
                Response.Write( " </script> ");
        其中有个前提中父窗口调用子窗口别人的代码写好了,我不能改只能在子窗口这边动手脚!


------解决方案--------------------
showModalDialog 可以传递参数的 根据返回值 在index.aspx写JS实现你需要的操作
参照下面

完整的请看我的blog http://blog.csdn.net/junval/archive/2007/03/13/1527768.aspx
关闭时候刷新父窗体

方法一:

在主页里写上: <iframe name=meizz width=0 height=0> </iframe>
模态框里写上: <form target= "meizz "> 将模态框提交给主页里那个隐藏的框架里

后台接收页里写上这么一句代码: <body onload= "if(window!=top)parnet.location.reload() ">

方法二:

在对子窗体操作后,如何刷新父窗体,因为此时父窗体的数据可能有变化

网上有很多人介绍用Response.Write( " <script language:javascript> javascript:window.opener.location.reload(); </script> ");但是试了很多版本,发现其实opener是识别不了的,在子页面里无法刷新父窗体 只有返回后让父窗体自己刷新,即this.Page.RegisterStartupScript( "a ", " <script language=javascript> window.showModalDialog( 'webform2.aspx?b= "+a+ " ', ' "+a+ " ', 'dialogWidth=380px;dialogHeight=450px;status=yes;scroll=no;resizable=no; ');window.location=window.location; </script> ");就是写在父窗体的执行脚本语句里,可以看到比刚才只是多了个window.location=window.location,就是自己在重新加载一遍.4其他:showModalDialog:模态窗口,始终获得焦点 被打开后就会始终保持输入焦点。除非对话框被关闭,否则用户无法切换到主窗口。类似alert的运行效果。 要在父窗口里开一个showModalDialog,可以通过父窗口一个按钮的click事件 如:this.Page.RegisterStartupScript( "dffd ", " <script language=javascript> window.showModalDialog( 'webform3.aspxb ', '变量 ', 'dialogWidth=380px;dialogHeight=450px;status=yes;scroll=no;resizable=no; ' </script> ");可以看到showModalDialog又三个参数,第一个为要开的子窗体,第二个为传递的变量,最后的为窗体的大小等些设置.如何传父窗体的值给子窗体,可以通过sessi