一个关于模态弹出窗口刷新父窗体
js实现弹窗效果代码总结,如:子窗口刷新父窗口
this.Response.Write("<script language=javascript>window.close();</script>");
//关闭,父窗口和子窗口都不弹出对话框,直接关闭
this.Response.Write("<script>");
this.Response.Write("<Script>window.open('WebForm2.aspx','','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=yes,width=750,height=470,left=80,top=40');</script>");
top=50:窗口距离屏幕上方
left=50:窗口距离屏幕左侧
例:window.open('detail.aspx?ID="+e.Item.Cells[1].Text+"','newwin','width=750,height=600,scrollbars=yes,top=50,left=50');");
例:
this.Response.Write("<script>alert('发表成功!');window.opener.location.href=window.opener.location.href;</script>");
在ModalDialog中操作父窗口对象
在ModalDialog中操作父窗口对象不能使用window parentWindow parent是用来在frame中进行操作的在对话框中不能用来操作父窗口对象正确的做法调用modaldialog时通过传参数的方式操作例需求父窗口页面为l 子窗口页面为l l中有文本框id为test 在打开的对话框中点击按钮将l的文本框值改为子窗口值实现打开对话框时把test 作为参数传给子窗口在子窗口中获取参数将参数对象(即l中传过来的text对象)的value属性值设置为子窗口值注意这里只能传id 不能传namel代码如下<><head><meta equiv= Content Type content= text/; charset=gb > <title>l</title></head><body><input type=text id=test value= ><input type=button value= OK onclick= window showModalDialog( l test ) ></body></>l代码如下<><head><meta equiv= Content Type content= text/; charset=gb > <title>l</title><script language=javascript>function func (){//获取父窗口传过来的参数var ptextid = window dialogArguments;if(ptextid != undefined){//将父窗口传过来的对象的值改为子窗口值ptextid value = 子窗口值 ;//关闭子窗口window close();}}</script></head><body><input type=button value= OK onclick=func ()></body></>如果需要操作的父窗口对象比较多也可以将window或window document作为参数传给子窗口例需求l中添加id为 aform 的的form form中有id为test 的文本框在l中除了进行上面的操作之外还要将test 的值改为子窗口值并将form提交到l实现将l中打开对话框的函数改为如下方式:window showModalDialog( l window document);将l中func ()改为如下:function func (){var pdoc = window dialogArguments;if(pdoc!=undefined){pdoc all test value= 子窗口值 ;pdoc all test value= 子窗口值 ;pdoc all aform action= l ;pdoc all aform submit();}实现因为在子窗口中对父窗口进行的操作比较多也可以采用execScript的方式实现将l中打开对话框的函数改为如下方式:window showModalDialog( l window);添加javascript函数如下function func(){test value= 子窗口值 ;document all test value= 子窗口值 ;aform action= l ;aform submit();将l中func ()改为如下:function func (){var pwin = window dialogArguments;if(pwin!=undefined){var codeStr = func();pwin execScript(codeStr javascript );window close();}lishixinzhi/Article/program/Java/hx/201311/27093。
js关闭模态窗口刷新父页面或跳转页面
js关闭模态窗⼝刷新⽗页⾯或跳转页⾯有两个窗⼝: A窗⼝(⽗),B窗⼝(模态)A窗⼝⾥有⼀个DATAGRID,⼀个按钮。
点击按钮时,弹出B窗⼝(模态)。
在B窗⼝中添加数据,提交后,要求B窗⼝⾃关闭,然后刷新A窗⼝(⽗)复制代码代码如下:<script type="text/javascript">function openSubWin(){window.showModalDialog('b.html', 'newwindow', 'height=500, width=400, top=0, left=0, toolbar=no, menubar=yes, scrollbars=yes,resizable=yes,location=no, status=no');window.location.reload();}</script>弹出⼦窗体b.html , 当关闭⼦窗体时触发⽗页⾯刷新最近做物资系统的时候,⼜涉及到模态窗⼝的问题了,上次做的时候没遇到这次这么多东西,记下来吧⽗窗⼝ js⽅法复制代码代码如下:function openwin(id){var answer=window.showModalDialog("demand.do?method=queryBOM&mdid="+id+"&d="+escape(newDate()),window.self,"dialogWidth:700px;dialogHeight:620px:center:yes");if(answer==1){window.location.href = "demand.do?method=selmd&d="+escape(new Date()); //转到处理页⾯//window.location.reload(); 刷新⽗窗⼝//winow.location.reload(true);}}加个escape(new Date()) 避免读取缓存,当然也可以在⼦窗⼝中,加⼊<META HTTP-EQUIV="pragma" CONTENT="no-cache"><META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate">⼦窗⼝ js ⽅法:复制代码代码如下:function reVal(){window.returnValue=1; //⽗窗⼝中 answer的值window.close();}打开模态窗⼝之后,⽗窗⼝会⼀直等待⼦窗⼝返回个值,如果是表单提交或是button就执⾏reVal()⽅法返回answer的值,window.returnValue=1 这个地⽅我测试了好像只能返回String类型的,数组类型的不好使在⼦窗⼝中使⽤ window.opener.location.reload(); 不好使,不试⽤于模态窗⼝,window.opern() 好使还有个问题是:在模态窗⼝⾥form 提交会弹出新窗⼝,这个问题简单就在<head>⾥⾯加个<base target="_self">就可以搞定,注:我刚开始是不想通过form提交的,⽤js window.location.href 跳转到不同的action去处理,发现<base target="_self"> 就不起作⽤了,似乎 <base target="_self"> 只是针对form action="" 才起作⽤,这个地⽅应该可以⽤iframe 去实现。
子窗口调用父窗口的方法
子窗口调用父窗口的方法我们需要了解什么是子窗口和父窗口。
在计算机科学领域,窗口是指操作系统中的一个矩形区域,可以显示程序的部分内容。
在Windows操作系统中,子窗口是指在父窗口内嵌入的另一个窗口,可以通过代码控制。
父窗口则是包含子窗口的窗口。
子窗口调用父窗口的方法是指在子窗口内部使用代码访问父窗口的元素或者方法。
通过这种方法,可以完成一些需要父窗口和子窗口之间交互的操作。
接下来我们将详细介绍如何实现子窗口调用父窗口的方法。
第一种方法是使用API函数。
API函数是Windows操作系统提供的一组函数库,包含了大量的功能,可以通过调用这些函数实现对Windows操作系统的访问和操作。
在子窗口调用父窗口的方法中,可以使用API函数来访问父窗口的句柄(handle)并执行父窗口的操作。
句柄是Windows系统中标识控件或者窗口的唯一标识符。
有了父窗口的句柄,就可以在子窗口内部完成对父窗口的操作。
```HWND hWndParent = GetParent(hWndChild);SendMessage(hWndParent, WM_COMMAND, (WPARAM)IDOK, (LPARAM)hwndChild);```上述代码中,GetParent函数用于获取子窗口的父窗口句柄,SendMessage函数用于向父窗口发送消息。
具体消息的类型、参数等可以根据实际需求进行替换。
第二种方法是使用MFC类框架。
MFC(Microsoft Foundation Classes)是微软公司推出的一套类库,可以帮助开发人员更加容易地开发Windows应用程序。
在MFC框架下,可以通过调用GetParentFrame函数获取父窗口的指针,并执行父窗口上的操作。
框架会自动处理CWnd类和CFrameWnd类之间的交互,让代码更加简洁易懂。
两种方法各有优缺点,选择哪种方法取决于实际需要。
使用API函数需要进行较多的手动操作,但可以在较底层的层次上控制操作;使用MFC类框架则需要掌握一定的MFC类库知识,但可以更加快速地实现功能。
打开一个新窗口 子窗口中调用父窗口的方法
主要实现父子关系的页面window.opener 是window.open 打开的子页面调用父页面对象a.html<html><head><title>主页面</title><script type="text/javascript">/** 为测试IFrame子窗口调用父窗口的全局变量而添加的测试变量*/var parentVairous = "为测试IFrame子窗口调用父窗口的全局变量而添加的测试变量";/*** 因为不同于IFrame(IFrame有id,window.open()与IFrame的父子窗口的模式不同), * 所以当是通过window.open()方法打开一个新窗口使, 必须有一个新窗口的对象* 当然必须先让子窗口弹出来, 才能调用子窗口中的变量, 否则抛出异常*/var OpenWindow;function openSubWin(){OpenWindow = window.open('b.html', 'newwindow', 'height=1024, width=1300, top=0, left=0, toolbar=no, menubar=yes, scrollbars=yes,resizable=yes,location=no, status=no');}function parentInvokeChild(){if(OpenWindow)//当然必须先让子窗口弹出来, 才能调用子窗口中的变量, 否则抛出异常{alert(OpenWindow.iFrameVair);}}</script></head><body><form name="form1" id="form1"><input type="text" name="username" id="username"/><input type="button" value="弹出子页面" onclick = "openSubWin()"><input type="button" value="测试调用弹出窗口中的全局变量" onclick = "parentInvokeChild()"></form></body></html>b.html<html><head><title>子页面</title><script type="text/javascript">/** 为测试父窗体调用IFrame子窗体的全局函数而添加的子窗口全局函数*/var iFrameVair = "测试父窗体调用IFrame子窗体的全局函数";function UpdateParent(){var _parentWin = window.opener;_ername.value = "xxxx" ;}function childInvokeParent(){var parentV airous = window.opener.window.parentVairous;alert(parentVairous);}</script></head><body><form name="form1" id="form1"><p> </p><p align="center"><input type="button"onclick = "UpdateParent();"name="button"id="button"value="更新主页面的UserName内容"><input type = "button"name = "button2"id = "button2"value = "测试IFrame子窗口调用父窗口的全局变量"onclick = "childInvokeParent();"/></p><p> </p></form></body>。
window.showModalDialog刷新父窗口父子窗口之间传值问题
window.showModalDialog刷新父窗口父子窗口之间传值问题第一个问题:刷新父窗口(没有传值操作)父页面打开时一定要传window参数openModalDialog("son.html",window,800,600);子页面中刷新:window.dialogArguments.location="parent.html";//parent.h tml是父页面的地址实例:parent.html<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML><HEAD><TITLE> </TITLE><mce:script type="text/javascript"><!--function openModalDialog(url,name,iWidth,iHeight){window.showModalDialog(url,name,'edge: Raised; center: Yes; help: Yes; resizable: Yes; status: No;dialogHeight:'+iHeight+'px;dialogWidth:'+iWidth+'px');}function show(){openModalDialog("son.html",window,800,600);}// --></mce:script></HEAD><BODY><input type="button" value="open" onclick="show()"></BODY></HTML>son.html<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML><HEAD><TITLE> New Document </TITLE><mce:script type="text/javascript"><!--function aa(){self.close();window.dialogArguments.location="parent.html";}// --></mce:script></HEAD><BODY>ssssssssssssssssssssssssssssssssss<input type="button" value="close" onclick="aa()"></BODY></HTML>=================================第二个问题:只传值不刷新parent2.html<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML><HEAD><mce:script type="text/javascript"><!--function show(){var params = new Array();params[0] = "00000000000";params[1] ="1111111111";params[2]="22222222222";var style = "dialogHeight:600px;dialogWidth:800px;status:no";window.showModalDialog("son2.html",params, style);}// --></mce:script></HEAD><BODY><input type="button" value="open" onclick="show()">aaaaaaaaaaaaaaaaaanfddddaas<input type="text"></BODY></HTML>son2.html<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML><HEAD><TITLE> New Document </TITLE><mce:script type="text/javascript"><!--var l_array=new Array();l_array=window.dialogArguments;var aa=l_array[0];var bb=l_array[1];var cc=l_array[2];alert(aa);alert(bb);alert(cc);// --></mce:script></HEAD><BODY>ssssssssssssssssssssssssssssssssss</BODY></HTML>第三个问题:传值+刷新父窗口father.html<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML><HEAD><TITLE>传值+刷新父窗口 </TITLE><mce:script language="javascript"><!--function openson(){var obj = new Object();="张三";obj.address="中国北京市";var k =window.showModalDialog("child.html",obj,"dialogWidth:800p x;dialogHeight:600p;status:no;");if(k.type==""){ //传递回的type为空的时候才刷新页面。
Winform子窗体刷新父窗体
Winform子窗体刷新父窗体Winform子窗体刷新父窗体调用窗体(父):Form1,被调用窗体(子):Form2 方法1:所有权法//Form1://需要有一个公共的刷新方法public void Refresh_Method(){//...}//在调用Form2时,要把Form2的所有者设为Form1 Form2 f2 = new Form2() ;f2.Owner = this;f2.ShowDialog() ;//Form2://在需要对其调用者(父)刷新时Form1 f1 ;f1 = (Form1)this.Owner;f1.Refresh_Method() ;方法2:自身传递法//Form1://需要有一个公共的刷新方法public void Refresh_Method(){//...}Form2 f2 = new Form2() ;f2.ShowDialog(this) ;//Form2:private Form1 p_f1;public Form2(Form1 f1) {InitializeComponent();p_f1 = f1;}//刷新时p_f1.Refresh_Method() ;方法3:属性法//Form1://需要有一个公共的刷新方法public void Refresh_Method() {//...}//调用时Form2 f2 = new Form2() ;f2.P_F1 = this;f2.Show() ;//Form2:private Form1 p_f1;public Form1 P_F1{get{return p_f1;}set{p_f1 = value;}}//刷新时p_f1.Refresh_Method() ;方法4:委托法//Form1://需要有一个公共的刷新方法public void Refresh_Method(){//...}//调用时Form2 f2 = new Form2() ;f2.ShowUpdate += new DisplayUpdate(Refresh_Method) ; f2.Show() ;//Form2://声明一个委托public delegate void DisplayUpdate();//声明事件public event DisplayUpdate ShowUpdate;//刷新时,放在需要执行刷新的事件里ShowUpdate();调用窗体(父):Form1,被调用窗体(子):Form2方法1:所有权法//Form1://需要有一个公共的刷新方法public void Refresh_Method(){//...}//在调用Form2时,要把Form2的所有者设为Form1Form2 f2 = new Form2() ;f2.Owner = this;f2.ShowDialog() ;//Form2://在需要对其调用者(父)刷新时Form1 f1 ;f1 = (Form1)this.Owner;f1.Refresh_Method() ;方法2:自身传递法//Form1://需要有一个公共的刷新方法public void Refresh_Method() {//...}Form2 f2 = new Form2() ;f2.ShowDialog(this) ;//Form2:private Form1 p_f1;public Form2(Form1 f1){InitializeComponent();p_f1 = f1;}//刷新时p_f1.Refresh_Method() ;方法3:属性法//Form1://需要有一个公共的刷新方法public void Refresh_Method() {//...}//调用时Form2 f2 = new Form2() ;f2.P_F1 = this;f2.Show() ;//Form2:private Form1 p_f1;public Form1 P_F1{get{return p_f1;}set{p_f1 = value;}}//刷新时p_f1.Refresh_Method() ;方法4:委托法//Form1://需要有一个公共的刷新方法public void Refresh_Method(){//...}//调用时Form2 f2 = new Form2() ;f2.ShowUpdate += new DisplayUpdate(Refresh_Method) ; f2.Show() ;//Form2://声明一个委托public delegate void DisplayUpdate();//声明事件public event DisplayUpdate ShowUpdate;//刷新时,放在需要执行刷新的事件里ShowUpdate(); 最好用方法四子窗体向父窗体传值以及父窗体向子窗体传值Code1:所有权法//Form1://需要有一个公共的刷新方法public void Refresh_Method(){//}//在调用Form2时,要把Form2的所有者设为Form1 Form2 f2 = new Form2() ;f2.Owner = this;f2.ShowDialog() ;//Form2://在需要对其调用者(父)刷新时Form1 f1 ;f1 = (Form1)this.Owner;f1.Refresh_Method() ;eg:Form1中的函数:public void DiaoYong(string str){this.textBox1.Text =str;}private void button2_Click(object sender, EventArgs e) {string str = this.textBox1.T ext;Form2 f2 = new Form2(str);//在构造函数中,向子窗体传值。
mfc 子窗口调用父窗口方法
mfc子窗口调用父窗口方法1.前言在MFC程序设计中,经常需要子窗口调用父窗口的方法。
这通常是因为子窗口需要操作父窗口中的数据或者控制父窗口中的界面。
本文将介绍在MFC程序中如何实现子窗口调用父窗口的方法,并提供几个实例。
2.使用消息传递机制在MFC中,子窗口和父窗口之间可以通过消息传递机制实现相互通信。
具体地说,子窗口可以向父窗口发送消息,父窗口可以接收子窗口发送的消息,并根据消息内容来执行相应的方法。
MFC提供了许多消息类型,例如WM_COMMAND、WM_NOTIFY、WM_PAINT等。
如果需要在子窗口和父窗口之间传递自定义消息,可以通过自定义消息类型来实现。
以下是一个使用消息传递机制实现子窗口调用父窗口方法的示例://在子窗口类中添加如下代码:define WM_CHILD_TO_PARENT(WM_USER+1)//自定义消息类型void CChildDlg::OnButton1(){//向父窗口发送消息GetParent()->SendMessage(WM_CHILD_TO_PARENT,0,0);}//在父窗口类中添加如下代码:afx_msg LRESULT CParentDlg::OnChildToParent(WPARAM wParam, LPARAM lParam){//执行父窗口方法//...return0;}BEGIN_MESSAGE_MAP(CParentDlg,CDialog)ON_MESSAGE(WM_CHILD_TO_PARENT,OnChildToParent)END_MESSAGE_MAP()在上述示例中,子窗口类CChildDlg中的OnButton1方法向父窗口发送了一个自定义消息类型WM_CHILD_TO_PARENT。
父窗口类CParentDlg重载了消息映射函数OnChildToParent,并在其中执行相应的方法。
通过这种方式,子窗口就可以调用父窗口的方法了。
子窗体调用父窗体的方法
子窗体调用父窗体的方法子窗体调用父窗体的方法涉及到窗体之间的相互访问及数据传递,下面将具体介绍如何实现。
在Windows窗体应用程序中,一个窗体可以包含另一个窗体。
被包含的窗体称为子窗体,包含子窗体的窗体称为父窗体。
子窗体与父窗体之间是一种容器关系,父窗体可以包含多个子窗体,而一个子窗体只能有一个父窗体。
要实现子窗体调用父窗体的方法,可以通过以下步骤来完成:1.创建父窗体和子窗体:首先,我们需要创建一个父窗体和一个子窗体。
在Visual Studio开发环境中,可以通过“添加->窗体”来创建一个新的窗体。
创建好父窗体和子窗体后,可以通过拖曳和布局来设置它们的位置和样式。
2.添加公开方法:在父窗体中,我们需要添加一个公开的方法,用于供子窗体调用。
这个方法可以是无参方法,也可以带有参数。
在公开方法中可以执行一些具体的操作,比如修改父窗体中的控件属性、访问父窗体的数据等。
3.获取父窗体的引用:在子窗体中,我们需要获取父窗体的引用,才能调用父窗体中的方法。
可以通过以下两种方式来获取父窗体的引用:方式一:通过构造函数传递引用在子窗体的构造函数中,添加一个参数,类型为父窗体的类型。
在创建子窗体的对象时,将父窗体的引用传递给子窗体对象。
子窗体可以通过这个引用来访问父窗体的方法和属性。
方式二:通过窗体属性获取引用在子窗体中,可以通过使用如下代码获取父窗体的引用:ParentForm parentForm = this.ParentForm as ParentForm;这里的ParentForm是父窗体的类名,将其转换为ParentForm类型,并赋值给parentForm变量。
4.调用父窗体的方法:在子窗体中,获取到父窗体的引用后,就可以调用父窗体中的方法了。
通过引用可以直接访问父窗体的公开方法,并传递相应的参数。
具体实现代码如下所示:父窗体public partial class ParentForm : Form{public ParentForm(){InitializeComponent();}公开方法public void ParentMethod(){执行一些操作}}子窗体public partial class ChildForm : Form{private ParentForm parentForm;public ChildForm(ParentForm parentForm){InitializeComponent();this.parentForm = parentForm; 获取父窗体的引用}private void button1_Click(object sender, EventArgs e){parentForm.ParentMethod(); 调用父窗体的方法}}在子窗体中的按钮点击事件中,可以调用父窗体的方法。
layer iframe层 调用父页面方法
Layer iframe层调用父页面方法近年来,随着网页技术的发展和普及,前端页面的交互性和复杂度不断提高。
其中,弹出层和iframe技术的应用越来越广泛,特别是在实现复杂的页面嵌套和交互功能上发挥着不可替代的作用。
在这篇文章中,我们将深入探讨layer弹出层中iframe层调用父页面方法的实现原理和应用技巧。
1. layer的弹出层和iframe层介绍在深入讨论layer iframe层调用父页面方法之前,首先需要了解layer 弹出层和iframe层的基本概念和用法。
Layer是一款web弹层的组件,主要用于网页中弹出对话框、提示框等窗口,而iframe层则是layer的一个特殊功能,它可以在弹出层中加载一个独立的网页页面,实现页面嵌套和互相调用的功能。
2. iframe层调用父页面方法的实现原理在实际的web开发中,经常会遇到在iframe层中调用父页面方法的需求。
这时,就需要了解iframe层调用父页面方法的实现原理。
简单来说,利用javascript中的window对象,我们可以通过parent属性获取父页面的window对象,从而实现iframe层调用父页面方法的功能。
3. 实现技巧和注意事项在实际的项目开发中,为了确保layer iframe层调用父页面方法的顺利实现,我们需要掌握一些实现技巧和注意事项。
需要确保父页面和iframe页面处于同源环境,避免跨域访问的安全限制。
在父页面中提供需要被调用的方法,并通过window对象的属性或方法暴露给iframe页面进行调用。
另外,在调用过程中需要注意异常处理和错误提示,以确保页面的稳定性和用户体验。
4. 个人观点和总结作为一名前端开发者,我个人认为layer弹出层和iframe层的应用给前端页面的交互性和功能实现带来了很大的便利和灵活性。
通过深入了解layer iframe层调用父页面方法的原理和实现技巧,我们可以更好地应用这一技术,实现页面功能的拓展和优化。
javascript关于open.window子页面执行完成后刷新父页面的问题分析
javascript关于open.window⼦页⾯执⾏完成后刷新⽗页⾯的问题分析本⽂实例分析了javascript关于open.window⼦页⾯执⾏完成后刷新⽗页⾯的⽅法。
分享给⼤家供⼤家参考。
具体分析如下:主页⾯:<input id="btnAdd" type="button" onclick="openWin();" value="添加" />在js中有如下代码:function openWin() {window.open('addInfo.jsp', '_blank','width=300,height=400,top=200,left=400');}//定义callback⽅法,⽤于回调function callback() {refreshWin();}//刷新当前页⾯function refreshWin() {//调⽤刷新页⾯的⽅法,此处RefreshSocket为刷新页⾯对应的⽅法//也就是说,如果页⾯有个刷新按钮,//则点击按钮提交的类名就是此处的类名var url = 'RefreshSocket';window.location.href = url;}在addInfo.jsp页⾯有如下代码:<form name="form" action="AddSocket" method="get"><input id="onSub" type="button" onclick="formSubmit();" value="确定"></form>function formSubmit(){this.form.submit();//提交action到AddSocket类window.opener.callback();//上述执⾏完成后,调⽤打开页⾯的callback⽅法,//此处是调⽤主页⾯的callback⽅法window.close();//当前页⾯关闭}另外,如果是像删除这样的操作,直接从⼀个jsp跳转到⼀个类中,在类中执⾏⼀系列操作后,如果想刷新当前页⾯,那么,可以直接在类中书写跳转语句即可,如下所⽰:主页⾯mainPage.jsp://删除操作关联后台的DeleteSocket类,如果要传参数,⽤?即可window.location.href = DeleteSocketDeleteSocket类页⾯:复制代码代码如下://执⾏⼀系列操作后,可以直接书写JavaScript代码//写完这句话后就可以直接跳转到主页⾯并刷新主页⾯out.print("<script type='text/javascript'>location.href='mainPage.jsp'</script>");希望本⽂所述对⼤家的javascript程序设计有所帮助。
layer实现关闭弹出层刷新父界面功能详解
layer实现关闭弹出层刷新⽗界⾯功能详解本⽂实例讲述了layer实现关闭弹出层刷新⽗界⾯功能。
分享给⼤家供⼤家参考,具体如下:layer是⼀款近年来备受青睐的web弹层组件,她具备全⽅位的解决⽅案,致⼒于服务各⽔平段的开发⼈员,您的页⾯会轻松地拥有丰富友好的操作体验。
最近⼀个项⽬采⽤的是hui前端框架,他的弹出层就是⽤的layer插件,对于弹出层,有⼀个操作体验⼤家都知道,就是关闭弹出层,需要刷新⽗页⾯。
开始写的时候,我陷⼊了⾃⼰的误区,在弹出层处理成功之后,我调⽤的是:var index = yer.getFrameIndex();parent.location.href=url;yer.close(index);这个地⽅是这样写也没错,但是如果这么写,它就只能被⼀个地⽅调⽤了,如果有多个地⽅调⽤的话,它不能返回原地址,⽽是重定向到新的url地址上去了。
⽽刚好,在我的项⽬中间,某⼀个弹出层被两个地⽅调⽤了,所以很明显这种⽅案就不合适了,需要优化。
百度了⼀下,找到如下两种优化⽅案:⽅案⼀:在layer弹出层中调⽤⽗界⾯重新加载函数window.parent.location.reload();var index = yer.getFrameIndex();yer.close(index);⽅案⼆:调⽤layer插件的end回调⽅法:end - 层销毁后触发的回调类型:Function,默认:null⽆论是确认还是取消,只要层被销毁了,end都会执⾏,不携带任何参数。
⽗窗⼝打开layer弹出框时,添加end回调function openLayer() {//iframe层yer.open({type: 2,title: '修改',shadeClose: false, //点击遮罩关闭shade: 0.8,area: ['30%', '45%'],maxmin: true,closeBtn: 1,content: [url, 'yes'], //iframe的url,yes是否有滚动条end: function () {location.reload();}});layer弹出框处理完成之后,就不需要调⽤其他刷新操作函数了,直接关闭就⾏了var index = yer.getFrameIndex();yer.close(index);相⽐较⽽⾔,第⼀种⽅案会更佳,因为在操作逻辑上,⼿动关闭弹出框,应该不触发刷新操作,只有当弹出框的处理逻辑执⾏成功后,调⽤函数关闭弹出框才触发⽗界⾯刷新操作,基于这个逻辑,应该选择⽅案⼀。
JavaScript页面刷新与弹出窗口问题的解决方法
JavaScript页⾯刷新与弹出窗⼝问题的解决⽅法⼤家有没有发现,有些⽹页,刷新的时候,会弹出⼀个提⽰窗⼝,点“确定”才会刷新。
⽽有的页⾯不会提⽰,不弹出提⽰窗⼝,直接就刷新了. 如果页⾯没有form,则不会弹出提⽰窗⼝。
如果页⾯有form表单, a)< form method="post" ...> 会弹出提⽰窗⼝ b)< form method="get" ...> 不会弹出window.location.reload();使⽤window.open()弹出的弹出窗⼝,刷新⽗窗⼝window.opener.location.reload()使⽤window.showDialog弹出的模式窗⼝window.dialogArguments.location.reload();下⾯给两个弹出屏幕居中窗⼝的例⼦复制代码代码如下:window.open()⽅式function ShowDialog(url) {var iWidth=300; //窗⼝宽度var iHeight=200;//窗⼝⾼度var iTop=(window.screen.height-iHeight)/2;var iLeft=(window.screen.width-iWidth)/2;window.open(url,"Detail","Scrollbars=no,Toolbar=no,Location=no,Direction=no,Resizeable=no,Width="+iWidth+" ,Height="+iHeight+",top="+iTop+",left="+iLeft);}window.showModalDialog⽅式function ShowDialog(url) {var iWidth=300; //窗⼝宽度var iHeight=200;//窗⼝⾼度var iTop=(window.screen.height-iHeight)/2;var iLeft=(window.screen.width-iWidth)/2;window.showModalDialog(url,window,"dialogHeight: "+iHeight+"px;dialogWidth: "+iWidth+"px;dialogTop: "+iTop+"; dialogLeft: "+iLeft+"; resizable: no; status: no;scroll:no");}注意这⾥的第⼆个参数,window在< /head >和< body >间加⼊< base target="_self" >复制代码代码如下:function CloseWin(){var ua = erAgent; var ie = navigator.appName=="Microsoft Internet Explorer"?true:false;if(ie){var IEversion = parseFloat(ua.substring(ua.indexOf("MSIE ")+5,ua.indexOf(";",ua.indexOf("MSIE "))));if( IEversion< 5.5){var str = ;document.body.insertAdjacentHTML("beforeEnd", str);document.all.noTipClose.Click();} else {window.opener =null; window.close();}}else{window.close()} }。
layer实现登录弹框,登录成功后关闭弹框并调用父窗口的例子
layer实现登录弹框,登录成功后关闭弹框并调⽤⽗窗⼝的例⼦可以从官⽹上下载最新版本.使⽤layer实现登录弹框,登录成功以后关闭弹框,并调⽤⽗窗⼝⽅法。
1.界⾯如下:2.login.html的界⾯主要代码:<div class="layer_form"><div class="form_item"><label>⼿机号码:</label><div class="form_item_input"><input type="text" id="username" placeholder="⼿机号码" class="input_long"/></div><i class="red">*</i></div><div class="form_item"><label>密码:</label><div class="form_item_input"><input type="password" id="password" placeholder="请输⼊密码" class="input_long"/></div><i>*</i></div><div class="form_item"><label>验证码:</label><div class="form_item_input"><input type="password" id="validateCode" placeholder="请输⼊验证码" class="input_short"/></div><a href="#" rel="external nofollow" class="form_item_code" title="看不清换⼀张"></a><i>*</i></div>3.点击登录按钮,登录成功以后,调⽤⽗窗⼝的⽅法,并关闭弹窗,其js代码如下(这段代码是嵌⼊在login.html中):<script type="text/javascript">$(function () {$('#loginBtn').click(function () {var username = $.trim($("#username").val());//获取⽤户名var password = $.trim($("#password").val());var validateCode = $.trim($("#validateCode").val());var url = '登录请求的url路径';var param = {"username": username, "password": password, "validateCode": validateCode};$.post(url, param, function(data) {if (data == "0") {//调⽤⽗窗⼝的function addPersonalCenter(){}⽅法,在⽗窗⼝右上⾓增加⼀个个⼈中⼼按钮window.parent.addPersonalCenter();// 先获取窗⼝索引,才能关闭窗⼝var index = yer.getFrameIndex();yer.close(index);} else {alert("登录失败!");}});});});</script>3.⽗窗⼝的layer弹框代码(layer.js的引⼊省略),⼀般是点击登录按钮,跳出登录弹框:$(function(){$('#u_login').on('click', function(){layer.open({type: 2,title: '⽤户登录',maxmin: true,skin: 'layui-layer-lan',shadeClose: true, //点击遮罩关闭层area : ['400px' , '280px'],content:'login.html'//弹框显⽰的url});});以上只是主要代码,必须先引⼊JQuery与layer.js,仅供参考。
Winform多个窗口编辑同一条数据同步的实现
Winform多个窗⼝编辑同⼀条数据同步的实现场景:⼀个主窗⼝中,可以在列表(DataGridView)⾥选中⼀条记录编辑,打开⼀个编辑窗⼝(⾮模态窗⼝),编辑窗⼝保存后需要刷新⽗窗⼝,由于编辑窗⼝是⾮模态窗⼝,如果打开了多个窗⼝,并且都是编辑同⼀条数据,那么⼀个窗⼝保存(并关闭)后,需要通知其它正在打开的窗⼝“数据有更改,需要刷新”⾸先,刷新⽗窗⼝,如果是打开编辑窗⼝是模态窗⼝,那么可以类似如下的实现(伪代码):FormEdit frm = new FormEdit();frm.EditId = 选中数据⾏对应的id;if(frm.ShowDialog() == DialogResult.OK){UpdateThisForm();}⾮模态窗⼝是Form.Show(); 由于该⽅法是void修饰,因此不能像上⾯那样去实现,此时可以在编辑窗⼝类中公开⼀个事件,当⽗窗⼝new这个编辑窗⼝后,可以注册这个事件,然后编辑窗⼝中如果保存了可以调⽤该事件⽅法达到通知的效果。
下⾯是例⼦,主窗⼝有⼀个DataGridView控件,数据绑定是Person的集合,Person实体类有Id,Name属性,选中某⼀⾏并点击编辑,可以打开编辑界⾯;编辑界⾯有⼀个⽂本框显⽰编辑Person的Name,有⼀个保存按钮,点击保存之后将修改的Name更新到Person集合中(此处Person集合通过Xml序列化和反序列化实现保存于读取)主窗⼝核⼼代码:public partial class Form1 : Form{public Form1(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){if (dataGridView1.SelectedRows.Count == 1){int personId = (int)dataGridView1.SelectedRows[0].Cells["Id"].Value;Form2 frm = new Form2();frm.personId = personId;frm.UpdateParentEvent += Frm_UpdateParentEvent;frm.Show();}}private void Frm_UpdateParentEvent(){LoadData();}private void Form1_Load(object sender, EventArgs e){LoadData();}private void LoadData(){List<Person> personList = XmlSerializeHelper.DeserializeObject<List<Person>>("persons.xml");dataGridView1.DataSource = personList;}View Code编辑窗⼝核⼼代码:public partial class Form2 : Form{public int personId;///<summary>///刷新⽗窗⼝的事件///</summary>public event Action UpdateParentEvent;private Person p = null;private List<Person> persons;public Form2(){InitializeComponent();}private void Form2_Load(object sender, EventArgs e){persons = XmlSerializeHelper.DeserializeObject<List<Person>>("persons.xml");p = persons.Where(ps => ps.Id == personId).SingleOrDefault();if (p != null){txtName.Text = ;}}private void btnSave_Click(object sender, EventArgs e){if (p != null){ = txtName.Text;XmlSerializeHelper.SerializeObject(persons, "persons.xml");UpdateParentEvent?.Invoke();//获取所有打开的窗⼝var openForms = Application.OpenForms;Type thisType = this.GetType();this.Close();foreach (var item in openForms){Type itemType = item.GetType();//如果都是当前窗⼝的类的实例,但不是当前实例(证明打开了多个窗⼝)if (itemType == thisType && !object.ReferenceEquals(item,this)){int itemPersonId = (int)itemType.GetField("personId").GetValue(item);//证明编辑的是同⼀条记录,需要通知其它窗⼝刷新页⾯if (itemPersonId == this.personId){MethodInfo mInfo = itemType.GetMethod("ChangeHandle",BindingFlags.NonPublic | BindingFlags.Instance);mInfo?.Invoke(item,null);}}}}}private void ChangeHandle(){if (MessageBox.Show("其它窗⼝修改了本条数据,需要重新加载","提⽰",MessageBoxButtons.OK,rmation) == DialogResult.OK) {//重新加载数据Form2_Load(this, null);}}}View Code测试:下⾯是打开了两个编辑窗⼝,并且都是编辑同⼀条数据,当编辑其中⼀个的Name,并保存后,另⼀个提⽰需要刷新⽰例中使⽤了Application.OpenForms;得到当前所有打开的窗⼝,遍历并通过反射获取她们的“类型”(Type,下同),如果“类型”与当前窗⼝的“类型”相同,并且不是当前窗⼝,且⼜是编辑同⼀条数据时,反射获取⽅法并调⽤,以达到通知的效果。
JS关闭窗口弹出新窗口,关闭新窗口时,刷新父窗口,JS代码实现刷新网页,js实现弹出窗口代码收集集萃
经常上网的朋友可能到过这样一些网站,一进入首页立刻会弹出一个窗口,或者按一个链接或按钮弹出,通常在这个窗口里会显示一些注意事项、版权信息、警告、欢迎光顾之类的话或者作者想要特别提示的信息。
其实制作这样的页面非常容易,只要往该页面的HTML里加入几段javascript代码即可实现。
下面我就带你剖析它的奥秘。
【最基本的弹出窗口代码】其实代码非常简单:<SCRIPT LANGUAGE="javascript"><!--window.open ('page.html')--></SCRIPT>因为这是一段javascript代码,所以它们应该放在<SCRIPT LANGUAGE ="javascript">标签和</script>之间。
<!--和-->是对一些版本低的浏览器起作用,在这些老浏览器中如果不支持javascript,不会将标签中的代码作为文本显示出来。
Window.open ('page.html')用于控制弹出新的窗口page.html,如果page.html不与主窗口在同一路径下,前面应写明路径,绝对路径(http://)和相对路径(../)均可。
用单引号和双引号都可以,只是不要混用。
这一段代码可以加入HTML的任意位置,加入到<head>和</head>之间也可以,位置越靠前执行越早,尤其是页面代码较长时,又想使页面早点弹出就尽量往前放。
【经过设置后的弹出窗口】下面再说一说弹出窗口外观的设置。
只要再往上面的代码中加一点东西就可以了。
我们来定制这个弹出窗口的外观、尺寸大小、弹出位置以适应该页面的具体情况。
<SCRIPT LANGUAGE="javascript:><!--window.open ('page.html','newwindow','height=100,width=400,top=0,left=0,toolbar=no, menubar=no,scrollbars=no,resizable=no,location=no,status=no')//写成一行--></SCRIPT>参数解释:<SCRIPT LANGUAGE="javascript"> js脚本开始;window.open 弹出新窗口的命令;page.html 弹出新窗口的文件名;newwindow 弹出窗口的名字(不是文件名),可用空″代替;height=100 窗口高度;top=0 窗口距离屏幕上方的像素值;left=0 窗口距离屏幕左侧的像素值;toolbar=no 是否显示工具栏,yes为显示;menubar,scrollbars 表示菜单栏和滚动栏;resizable=no 是否允许改变窗口大小,yes为允许;location=no 是否显示地址栏,yes为允许;status=no 是否显示状态栏内的信息(通常是文件已经打开),yes为允许;</SCRIPT> js脚本结束。
Pythontkinter模块弹出窗口及传值回到主窗口操作详解
Pythontkinter模块弹出窗⼝及传值回到主窗⼝操作详解本⽂实例讲述了Python tkinter模块弹出窗⼝及传值回到主窗⼝操作。
分享给⼤家供⼤家参考,具体如下:有些时候,我们需要使⽤弹出窗⼝,对程序的运⾏参数进⾏设置。
有两种选择⼀、标准窗⼝如果只对⼀个参数进⾏设置(或者说从弹出窗⼝取回⼀个值),那么可以使⽤simpledialog,导⼊⽅法:from tkinter.simpledialog import askstring, askinteger, askfloat完整例⼦import tkinter as tkfrom tkinter.simpledialog import askstring, askinteger, askfloat# 接收⼀个整数def print_integer():res = askinteger("Spam", "Egg count", initialvalue=12*12)print(res)# 接收⼀个浮点数def print_float():res = askfloat("Spam", "Egg weight\n(in tons)", minvalue=1, maxvalue=100)print(res)# 接收⼀个字符串def print_string():res = askstring("Spam", "Egg label")print(res)root = ()tk.Button(root, text='取⼀个字符串', command=print_string).pack()tk.Button(root, text='取⼀个整数', command=print_integer).pack()tk.Button(root, text='取⼀个浮点数', command=print_float).pack()root.mainloop()⼆、⾃定义窗⼝如果要设置的参数个数超过两个,那么tkinter提供的标准窗⼝就处理不了了。
js调用父框架函数与弹窗调用父页面函数的简单方法
js调⽤⽗框架函数与弹窗调⽤⽗页⾯函数的简单⽅法调⽤⽗级中的 aaa的函数⼦页⾯中:onclick="window.parent.frames.aaa()"⽗页⾯中:function aaa(){alert(‘bbbbb');}frame框架⾥的页⾯要改其他同框架下的页⾯或⽗框架的页⾯就⽤parentwindow.opener引⽤的是window.open打开的页⾯的⽗页⾯。
window.frames对象可以引⽤iframe⾥的页⾯,也可以引⽤frameset⾥的页⾯.可以这样window.frames[0].document.getElementById(‘xx');可以这样window.frames[0].document.body.innerHTML;frm = window.parent.window.frames[‘uploadFrame'];frmDocument = frm.document;frm.sb(3); //sb 是uploadFrame页⾯⾥的⼀个函数对于firefox如果你遇到报错:parent.document.frames has no properties换为如下代码就可以了,这个代码IE,ff兼容. frm = window.parent.window.frames[‘uploadFrame'];其实 frames 集合并不是挂在document ⽽是挂在 window 对象下.注意这样修改frame⾥的页⾯有限制,就是必须是同域下的,否则⽆法访问如果是同⼀域下,但是⼦域名不同,那么涉及到的js,html⽂件都加上⼀句。
document.domain = [这⾥填写你的域名]document.getElementById(‘iframeid').contentWindow.document.getElementById(‘someelementid');js弹窗页⾯后调⽤⽗页⾯函数(例如:调⽤⽗页⾯函数test2())window.opener.test2();框架⼦页⾯调⽤上⼀个页⾯⽅法(例如:上⼀页⾯的框架frame名为menuBar,调⽤onhook()函数)window.top.frames["menuBar"].onhook();js弹窗页⾯调⽤⽗页⾯框架⼦页⾯函数(如:弹窗页⾯调⽤,frame名为menuBar)window.opener.top.frames['menuBar'].onhook();以上就是⼩编为⼤家带来的js调⽤⽗框架函数与弹窗调⽤⽗页⾯函数的简单⽅法全部内容了,希望⼤家多多⽀持~。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
</head>
<body>
<a href="javascript:void(0)" onclick="window.open('2.html','','')">open</a>
<script language="JavaScript">
function showabout()
{
var returnValue=showModalDialog('2.html','','dialogWidth:520px;dialogHeight:510px;help:no;center:yes;resizable:no;status:no;scroll:no');
->
</body>
</html>
换做模态后的程序。
父窗体代码
<%@ page contentType="text/html; charset=GBK" %><HEAD>
<body onUnload="opener.location.reload()">
我尝试过一些方法但是始终不对。请各位高手进来一下。
用OPEN打开的不管是在关闭窗体时自动刷新都没有任何问题。见下例
父窗体代码
<%@ page contentType="text/html; charset=GBK" %>
<html>
<head>
答2:
模态对话框是不能用opener引用父窗口的,而是需要父窗口主动传递指针变量的
这个window.showModalDialog有第二个参数,就是做这个用的,你需要把window穿过去,就是这
样
子窗体代码
<%@ page contentType="text/html; charset=GBK" %>
<html>
<head>
<title></title>
</head>
<body onUnload="opener.location.reload()">
<html>
<head>
<title></title>
</head>
<body onUnload="opener.location.reload()">
<a href="javascript:opener.location.reload()">刷新</a>
<script language="JavaScript">
function showabout()
{
var returnValue=showModalDialog('2.html','','dialogWidth:520px;dialogHeight:510px;help:no;center:yes;resizable:no;status:no;scroll:no');
</body>
</html>
请各位参考一下上面的代码,我感觉错误好象是出在
opener.location.reload()
谢谢
______________________________________________________________________________________________
}
void(0);
</script>
<a href="javascript:void(0)" onClick="showabout()">open</a>
子窗体代码
<%@ page contentType="text/html; charset=GBK" %>
这样在对话框中就可以引用父窗口对象,怎么引用呢,通过window.dialogArgument就可以应用父窗口了。
______________________________________________________________________________________________
</body>
</html>
子窗体代码
<%@ page contentType="text/html; charset=GBK" %>
<html>
<head>
<title></title>
location.reload()//模态窗口传值下来后就可以刷新了.
}
void(0);
</t>
<a href="javascript:void(0)" onClick="showabout()">open</a>
答3:
谢谢。我终于搞定了。
上面的dialogArgument差个S
我调了半天。发现在body里面应该加上location
也就是<body onUnload="window.dialogArguments.location.reload()">
<a href="javascript:opener.location.reload()">刷新</a>//???在子窗口中不能刷新父窗口,只有window.close下去后才可刷新.
</body>
</html>
______________________________________________________________________________________________
</head>
<body onUnload="opener.location.reload()">
<!-
用按纽直接刷新父窗体
<a href="javascript:opener.location.reload()">刷新</a>
一个关于模态弹出窗口刷新父窗体的问题。急
问:
我在做一套系统的时候碰到这样一个问题。
弹出的模态窗口不能刷新父窗体。例如我新增数据是在模态窗口而添加成功了关闭后父窗体只能手动刷新。这样就严重影响了一些效果。
var returnValue=showModalDialog('2.html',window,'dialogWidth:520px;dialogHeight:510px;help:no;center:yes;resizable:no;status:no;scroll:no');
答1:
模态窗口不能在子窗口中直接刷新父窗口
父窗体代码
<%@ page contentType="text/html; charset=GBK" %><HEAD>
<body onUnload="opener.location.reload()">