`
chengzhi
  • 浏览: 110323 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

在ModalDialog中操作父窗口对象

阅读更多

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代码如下

<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>

 传的是个文本框,也可以传整个父类窗口window

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>

 

 

如果需要操作的父窗口对象比较多,也可以将windowwindow.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();

}

}

 

分享到:
评论
2 楼 jie523314 2010-11-12  
miracletree 写道
好!太感谢你了

1 楼 miracletree 2009-07-21  
好!太感谢你了

相关推荐

Global site tag (gtag.js) - Google Analytics