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>
传的是个文本框,也可以传整个父类窗口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>
如果需要操作的父窗口对象比较多,也可以将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();
}
}
分享到:
相关推荐
在JavaScript编程中,有时我们需要在弹出的子窗口(如ModalDialog)中操作父窗口的元素,例如修改某个文本框的值或者触发某些交互。在处理这种情况时,必须遵循特定的规则,因为直接使用`window.parent`在Modal...
在Windows Presentation Foundation(WPF)框架中,"Demo.ModalDialog.zip"可能是一个包含示例代码的压缩包,用于演示如何实现和使用模态对话框。模态对话框是WPF应用程序中常见的一种用户交互元素,它在显示时会...
如果模态对话框是嵌入在一个框架或者弹出窗口中,可能需要对父窗口执行此操作。 结合上述内容,"关闭模态对话框,刷新父窗口,异步上传文件"的实现可能如下: 1. 用户触发文件上传,打开模态对话框。 2. 使用`...
- 父窗口向子窗口(模态或非模态对话框)传递数据,通常在创建对话框对象时作为构造函数参数或者通过成员函数进行设置。 - 子窗口向父窗口传递数据,非模态对话框可以通过成员函数或信号槽机制(如果使用了MFC的事件...
在JavaScript编程中,有时我们需要创建一个模态对话框(modal dialog)来处理用户输入或确认操作,例如在父窗口中点击按钮,弹出一个模式窗口让用户添加数据,然后在数据提交后关闭模态窗口并刷新父窗口的数据。...
"关于jsp网页设计的模态和非模态窗口" 模态窗口和非模态窗口的概念 在网页设计中,模态窗口(Modal Dialog)和非模态...在上面的示例中,父窗口传递了一个对象参数 arg 到子窗口,并在子窗口中调用了父窗口的方法。
【Dialog_GDI+_Demo】是一个基于Windows平台的编程示例,它主要展示了如何在对话框(Dialog)中使用GDI+库进行图形绘制。GDI+是Microsoft提供的一种图形设备接口,扩展了传统的GDI(Graphics Device Interface),...
在C++编程中,非模态窗口(Non-modal dialog)是一种常见的用户界面元素,它允许用户与窗口同时交互,而不阻塞主应用程序窗口。非模态窗口通常用于提供额外的功能或者展示信息,用户可以在处理非模态窗口的同时继续...
另一种方式是利用成员变量,将数据作为成员存储在子窗口对象中,然后在需要的时候读取。此外,MFC的Observer模式实现,如ON_NOTIFY或ON_BN_CLICKED等消息处理机制,也能在特定事件发生时传递信息。 在提供的源代码...
下面的代码示例展示了如何将父窗口对象传递给子窗口,并在子窗口中获取和操作父窗口的元素: ```html // 父窗口 用户名: 选择输入" /> var sURL = "showModalDialog2.html"; var vArguments = window; var...
在计算机科学,特别是Windows编程领域,非模态对话框(Modeless Dialog Box)是一种允许用户在与对话框交互的同时继续与应用程序其他部分进行操作的窗口。与之相反的是模态对话框(Modal Dialog Box),它会阻塞用户...
非模态对话框则不会阻止用户与父窗口交互,它们可以与父窗口同时存在并进行操作。在MFC中,我们通过`CWnd`类的派生类来实现非模态对话框,并使用`Create()`或`CreateEx()`方法创建。非模态对话框在ARX中适用于需要...
其URL为"http://example.com/newpage.aspx",大小为800x600像素,位置为屏幕中央(假设`CenterFlag`为"yes"),并且是模态对话框,用户不能在关闭新窗口之前操作父窗口。 JavaScript的`showModalDialog`和`...
不过,需要注意的是,`showModalDialog`在现代浏览器中的支持情况并不一致,尤其是随着HTML5的`<dialog>`元素的出现,开发者更倾向于使用`<dialog>`或JavaScript库(如Bootstrap的Modal)来实现模态对话框,因为它们...
模态对话框是阻塞父窗口,直到用户与其交互并关闭后,才能继续操作父窗口的对话框。这确保了用户在处理当前对话框任务时不会分心去做其他事情。在Qt中,我们可以通过`QDialog`类或者特定的模态对话框子类(如`...
模态对话框会阻止用户与父窗口交互,直到对话框关闭;而非模态对话框则允许用户同时操作多个窗口。 6. **资源文件(Resource Files)** 在MFC中,对话框的布局通常通过资源文件来定义,包括控件的位置、大小、属性...
模态对话框在显示时会阻止用户与父窗口的交互,直到用户关闭对话框为止。这种方式确保了用户会注意到并处理当前的对话框。在Java中,我们可以使用JOptionPane类来创建模态对话框;在Windows Forms应用中,可以利用...
3. **跨框架通信**:当操作发生在子框架中时,使用`window.parent`或`window.top`可以访问到父框架或顶级框架的窗口对象。通过修改这些对象的属性或调用其方法,可以实现数据的传递。例如,可以在子框架中设置一个...
该方法接受三个参数:模态窗口的URL、父窗口对象和窗口属性字符串。然而,此方法在非IE浏览器中不可用,且已被废弃。 ```javascript var retrunvalue = window.showModalDialog("CheckBill_Query.aspx", window, ...