在ModalDialog中操作父窗口对象

原创 2006年06月07日 13:17:00

 ModalDialog中操作父窗口对象

文/Ray 

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>

 

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”的的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();

}

}

 

 

文/Ray

相关文章推荐

模式窗口操作父窗口

  • 2013年04月15日 13:59
  • 253B
  • 下载

Jquery 插件-可以用来操作定界窗,将在定界窗内选取的项目放到父窗口内

先看看演示吧!看完演示动画你就知道是干啥的了,这个插件害我死了不少脑细胞,以前同样的功能我使用js原型开发需要写至少三个零碎的函数来解决,而且一不小心就忘记怎么用了,所以今天写了这个函数,将全部操作功...
  • sibang
  • sibang
  • 2014年08月21日 16:44
  • 325

JS子父窗口互相操作取值赋值的方法介绍

$("#父窗口元素ID",window.parent.document); 对应javascript版本为window.parent.document.getElementByIdx_x("父窗...

JS脚本:JS子父窗口互相操作取值赋值的方法介绍

$("#父窗口元素ID",window.parent.document); 对应javascript版本为window.parent.document.getElementByIdx_x("父窗口...

Javascript父窗口和子窗口的函数或对象相互访问

打开子窗口
  • xfajsw
  • xfajsw
  • 2011年01月18日 10:31
  • 998

JavaScript父窗口与子窗口之间的操作总结---window.open篇

window.open 篇 1.父窗口对子窗口操作  打开:  var win=null;  win=window.open("Open.html","win","width=...
  • cui55
  • cui55
  • 2016年09月18日 14:59
  • 4491

子窗口操作父窗口自适应高度<iframe></iframe>

这不是跨域,且我不喜欢用定时器判断,父窗口load事件已适应子窗口高度,但如果后续操作会改变高度将不会适应新高度,且父窗口的click,mouse事件只有边框能触发,不用定时器去随时判断,那就只有从子...

子窗口操作父窗口

一、Iframe 篇 //父对象得到子窗口的值 //ObjectID是窗口标识,ContentID是元素ID function GetValue(ObjectID,ContentID)...
  • GQ2010
  • GQ2010
  • 2012年12月17日 13:26
  • 2900

总结JavaScript(Iframe、window.open、window.showModalDialog)父窗口与子窗口之间的操作

一、Iframe 篇 //&&&&&&&&&&&&&&&&&&&&公共方法开始&&&&&&&&&&&&&&& //父对象得到子窗口的值 //ObjectID是窗口标识,ContentID是元素ID ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在ModalDialog中操作父窗口对象
举报原因:
原因补充:

(最多只允许输入30个字)