不能使用windowparent Windowparent是用来在frame中进行操作的在对话框中不能用来操作父窗口对象 正确的做法 调用modaldialog时通过传参数的方式操作 例 需求 父窗口页面为l 子窗口页面为ll中有文本框id为test在打开的对话框中点击按钮将l的文本框值改为子窗口值 实现 打开对话框时把test作为参数传给子窗口在子窗口中获取参数将参数对象(即l中传过来的text对象)的value属性值设置为子窗口值 注意这里只能传id不能传name l代码如下 <html> <head> <meta httpequiv=ContentType content=text/html; charset=gb> <title>l</title> </head> <body> <input type=text id=test value=> <input type=button value= OK onclick=windowshowModalDialog(l test)> </body> </html> l代码如下 <html> <head> <meta httpequiv=ContentType content=text/html; charset=gb> <title>l</title> <script language=javascript> function func(){ //获取父窗口传过来的参数 var ptextid = windowdialogArguments; if(ptextid != undefined){ //将父窗口传过来的对象的值改为子窗口值 ptextidvalue = 子窗口值; //关闭子窗口 windowclose(); } } </script> </head> <body> <input type=button value= OK onclick=func()> </body> </html> 如果需要操作的父窗口对象比较多也可以将window或windowdocument作为参数传给子窗口 例 需求 l中添加id为aform的的formform中有id为test的文本框在l中除了进行上面的操作之外还要将test的值改为子窗口值并将form提交到l 实现 将l中打开对话框的函数改为如下方式: windowshowModalDialog(l windowdocument); 将l中func()改为如下: function func(){ var pdoc = windowdialogArguments; if(pdoc!=undefined){ pdocalltestvalue=子窗口值; pdocalltestvalue=子窗口值; pdocallaformaction=l; pdocallaformsubmit(); } 实现 因为在子窗口中对父窗口进行的操作比较多也可以采用execScript的方式实现 将l中打开对话框的函数改为如下方式: windowshowModalDialog(l window); 添加javascript函数如下 function func(){ testvalue=子窗口值; documentalltestvalue=子窗口值; aformaction=l; aformsubmit(); 将l中func()改为如下: function func(){ var pwin = windowdialogArguments; if(pwin!=undefined){ var codeStr = func(); pwinexecScript(codeStrjavascript); windowclose(); } } |