1 、不能使用 window.parent Window.parent 是用来在 frame 中进行操作的,在对话框中不能用来操作父窗口对象 2 、正确的做法 调用 modaldialog 时通过传参数的方式操作 例: 需求 父窗口页面为 a.html 子窗口页面为 b.html 。 a.html 中有" name="description" />
MILY: Verdana">1、不能使用window.parent Window.parent是用来在frame中进行操作的,在对话框中不能用来操作父窗口对象 2、正确的做法 调用modaldialog时通过传参数的方式操作 例: 父窗口页面为a.html 子窗口页面为b.html。a.html中有文本框id为test1,在打开的对话框中点击按钮,将a.html的文本框值改为“子窗口值”。 实现 打开对话框时把test1作为参数传给子窗口,在子窗口中获取参数,将参数对象(即a.html中传过来的text对象)的value属性值设置为“子窗口值” 注意:这里只能传id,不能传name a.html代码如下 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>a.html</title> </head> <body> <input type=text id=test1 value=''> <input type=button value=" OK " onclick='window.showModalDialog("b.html", test1)'> </body> </html> b.html代码如下 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>b.html</title> <script language=javascript> function func1(){ //获取父窗口传过来的参数 var ptextid = window.dialogArguments; if(ptextid != undefined){ //将父窗口传过来的对象的值改为“子窗口值” ptextid.value = "子窗口值"; //关闭子窗口 window.close(); } } </script> </head> <body> <input type=button value=" OK " onclick=func1()> </body> </html> 如果需要操作的父窗口对象比较多,也可以将window或window.document作为参数传给子窗口。 例: 需求 a.html中添加id为“aform”的的form,form中有id为test2的文本框,在b.html中,除了进行上面的操作之外,还要将test2的值改为“子窗口值2”,并将form提交到c.html。 实现1 将a.html中打开对话框的函数改为如下方式: window.showModalDialog("b.html", window.document); 将b.html中func1()改为如下: function func1(){ var pdoc = window.dialogArguments; if(pdoc!=undefined){ pdoc.all.test1.value="子窗口值"; pdoc.all.test2.value="子窗口值2"; pdoc.all.aform.action="c.html"; pdoc.all.aform.submit(); } } 实现2 因为在子窗口中对父窗口进行的操作比较多,也可以采用execScript的方式实现。 将a.html中打开对话框的函数改为如下方式: window.showModalDialog("b.html", window); 添加javascript函数如下 function func(){ test1.value="子窗口值"; document.all.test2.value="子窗口值2"; aform.action="c.html"; aform.submit(); } 将b.html中func1()改为如下: function func1(){ var pwin = window.dialogArguments; if(pwin!=undefined){ var codeStr = "func();" pwin.execScript(codeStr,"javascript"); window.close(); } }