showModalDialog()子窗口刷新父窗口
今天再次使用showModalDialog(),发现了两个问题,一是子窗口如何刷新父窗口,二是窗口的参数问题。
1 子窗口刷新父窗口
如果是window.open();问题就好办,直接用window.opener.location.reload();就搞定了
但是如果是window.showModalDialog(),它里面是没有window.opener的,不能用opener引用父窗口,直接调用用报错。
总结了一下有两种方法可以解决,一是在子窗口中刷新父窗口,二是在子窗口关闭后,父窗口自己刷新。
(1)在子窗口中刷新父窗口
父窗口: 因为子窗口不能直接引用父窗口,所以需要父窗口主动传递指针变量,就是window.showModalDialog的第二个参数,参数为“window”,意思就是把父窗口对象当做参数传递给子窗口,
示例:
var returnValue = window.showModalDialog(url,window,"dialogHeight=350px;dialogWidth=400px; center=yes;status=no;scroll=no;resizable=yes");
注意:window不要加引号。
子窗口:执行完操作后调用window.dialogArguments.location.reload();
注意:是window.dialogArguments,而不是window.dialogArgument,之前一直测试通过不了,就是这个属性写错了
window.dialogArguments 即为父窗口window对象的引用,获得父窗口的引用,就可以操作父窗口了,做什么都行,
但是调用window.dialogArguments.location.reload();父页面好像并没有刷新,原因未知??!!
(2)在父窗口中刷新自己
这个实现比较简单,在子窗口关闭后,父窗口自己刷新,例如:
var returnValue = window.showModalDialog(url,window,"dialogHeight=350px;dialogWidth=400px;center=yes;status=no;scroll=no;resizable=yes");
if(returnValue == "true"){
window.location.reload();
}
还有一种方法就是在子窗口中调用父窗口的一个方法,该方法自己刷新本页面(父窗口);
子窗口:window.dialogArguments.reloadPage();window.close;
父窗口: function reloadPage(){window.location.reload();}
2 showModalDialog参数问题:
vReturnValue = window.showModalDialog(sURL [, vArguments] [,sFeatures]);
第三个参数用来描述对话框的外观等信息,我调整了半天都不见效,后来发现原因出现在两个地方:
(1)长度,宽度,都是用 dialogHeight, dialogWidth表示,而不是heigh,width,和window.open()是不同的。
(2)多个参数用";"分割,而不是用","。
我就是因为粗心,在这两个地方浪费了很多时间,大家不要重蹈覆辙,要信心,把参数记牢!
showModalDialog()子窗口刷新父窗口的更多相关文章
- 【转】Asp.net关闭弹出窗口刷新父窗口
通常情况下,关闭窗口时不需要对父窗口做任何操作,但如果子窗口是某一对象的修改画面,这时,当关闭子窗体时就需要对父窗口刷新,刷新可以通过三种方式来实现:1,采用window.opener.locatio ...
- Asp.net关闭弹出窗口刷新父窗口
通常情况下,关闭窗口时不需要对父窗口做任何操作,但如果子窗口是某一对象的修改画面,这时,当关闭子窗体时就需要对父窗口刷新,刷新可以通过三种方式来实现:1,采用window.opener.locatio ...
- 转-JS子窗口创建父窗口操作父窗口
Javascript弹出子窗口 可以通过多种方式实现,下面介绍几种方法 (1) 通过window对象的open()方法,open()方法将会产生一个新的window窗口对象 其用法为: window ...
- JS刷新父窗口的几种方式<转>
常用的有: window.opener.location.reload(); 和 window.location.reload(); 浮层内嵌iframe及frame集合窗口,刷新父页面的 ...
- JS刷新父窗口的几种方式
浮层内嵌iframe及frame集合窗口,刷新父页面的多种方法 <script language=JavaScript> parent.location.reload(); ...
- (转载)c# winform 用子窗体刷新父窗体,子窗体改变父窗体控件的值
第一种方法: 用委托,Form2和Form3是同一组 Form2 C#代码 using System; using System.Collections.Generic; using System.C ...
- [转]- Winform 用子窗体刷新父窗体,子窗体改变父窗体控件的值
转自:http://heisetoufa.iteye.com/blog/382684 第一种方法: 用委托,Form2和Form3是同一组 Form2 using System; using Sys ...
- 更新记录后关闭子窗口并刷新父窗口的Javascript
有时我们需要在新打开的窗口里面编辑信息,等编辑完了,需要将当前窗口关闭并且刷新父窗口,以使修改生效,本文就是介绍用 javascript 来实现"更新记录后关闭子窗口并刷新父窗口" ...
- JS实现关闭当前子窗口,刷新父窗口
一.JS实现关闭当前子窗口,刷新父窗口 JS代码如下: <script> function refreshParent() { window.opener.location.href = ...
随机推荐
- thinkphp判断更新是否成功
如何判断一个更新操作是否成功 $Model = D('Blog'); $data['id'] = 10; $data['name'] = 'update name'; $result = $Model ...
- Nginad Server安装
前言 Nginad是一个基于php的开源项目,它既可以作为静态配置的Ad Server,也可以作为动态的RTB Exchange使用.代码结构比较直接明了,挺适合用作学习的.本文如果有理解错误的地方, ...
- vc 判断当前用户是否在管理员组以及是否SYSTEM权限运行
BOOL IsUserInAdminGroup() //判断是否在管理员组 { BOOL fInAdminGroup = FALSE; HANDLE hToken = NULL; HANDLE hTo ...
- Eclipse导出apk
http://jingyan.baidu.com/article/7908e85c8dea30af491ad24f.html
- java开发环境的搭建(JDK的下载安装及环境变量的配置)
首先可以在Sun公司网站 http://java.sun.com 免费下载java se提供的JDK. 下载后再下载的文件夹下打开,双击jdk文件跟着提示进行安装,安装结束后——点击本机电脑的开始—— ...
- zoj3988 二分图匹配
给一个数组,对于每两个数加起来为素数那么就是一个集合,求不超过k个集合的最多数是多少 解法:二分图匹配,先打素数筛,预处理边集,匹配完之后分两种情况k>匹配数,那么可以直接输出匹配数*2,否则可 ...
- python-Django初体验
1.搭建Django开发环境 2.创建工程与应用 CentOS6.5环境下 Python 2.6 ipython 1.2.1 Django 1.6.5 pip install -y django == ...
- 【SQL查询】查询结果分组_Group
1. 概述 “Group By”从字面意义上理解就是根据“By”指定的规则对数据进行分组 示例 2. group by的简单操作 3. Group By中Select指定的字段限制 select指定的 ...
- hdu4451 Dressing(容斥原理)
#include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #inc ...
- matrix-gui-2.0 将javascript文件夹改成js文件夹
/******************************************************************************** * matrix-gui-2.0 将 ...