电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

在ModalDialog中操作父窗口对象


发布日期:2020/5/22
 

不能使用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();

}

}

上一篇:转移到NetBeans平台的10个技巧

下一篇:使用PreparedStatement减少开发时间