在ModalDialog中操作父窗口对象

文章作者 100test 发表时间 2007:03:14 16:27:06
来源 100Test.Com百考试题网


1、不能使用window.parent

Window.parent是用来在frame中进行操作的,在对话框中不能用来操作父窗口对象

2、正确的做法

调用modaldialog时通过传参数的方式操作

例:

需求

父窗口页面为a.html 子窗口页面为b.htmla.html中有文本框idtest1,在打开的对话框中点击按钮,将a.html的文本框值改为“子窗口值”。

实现

打开对话框时把test1作为参数传给子窗口,在子窗口中获取参数,将参数对象(即a.html中传过来的text对象)的value属性值设置为“子窗口值”

注意:这里只能传id,不能传name

a.html代码如下

a.html

>

b.html代码如下

b.html

language=javascript>

function func1(){

//获取父窗口传过来的参数

var ptextid = window.dialogArguments.

if(ptextid != undefined){

//将父窗口传过来的对象的值改为“子窗口值”

ptextid.value = "子窗口值".

//关闭子窗口

window.close().

}

}

>

如果需要操作的父窗口对象比较多,也可以将window或window.document作为参数传给子窗口。

例:

需求

a.html中添加id为“aform”的的formform中有idtest2的文本框,在b.html中,除了进行上面的操作之外,还要将test2的值改为“子窗口值2”,并将form提交到c.html

实现1

a.html中打开对话框的函数改为如下方式:

window.showModalDialog("b.html", window.document).

b.htmlfunc1()改为如下:

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.htmlfunc1()改为如下:

function func1(){

var pwin = window.dialogArguments.

if(pwin!=undefined){

var codeStr = "func()."

pwin.execScript(codeStr,"javascript").

window.close().

}

}



相关文章


Hibernate访问多个数据库
基于Socket的Java网络编程集粹
在ModalDialog中操作父窗口对象
在Web工程中实现任务计划调度
Java的网络程序设计
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛