window.showModalDialog 与window.open传递参数的不同?
简单的说,就是一个在弹出窗口之后可以做其它的事,即window.open
另一个在弹出窗口之后不能做其它的事,只能是关闭了当前的窗口之后才能做其它的事,即window.showModalDialog
那么两者在使用上有什么不同呢?他们分别是如何和父窗口进行交互的呢?
先来看window.showModalDialog的例子:
我这里现在有一个父窗体parent.jsp,它里面有一个方法
function openChild(){
var temp = window.showModalDialog("child.jsp",window,'dialogWidth=400px;dialogHeight=200px');
document.getElementById("fromChildName").value = temp.childName;
document.getElementById("fromChildAge").value = temp.childAge;
}
这里面,我们第二个参数传递为window,也就是把当前页面做为参数传递到子窗口中,temp 为子窗口的返回值
再来看子窗口child.jsp页面:
function fromParent(){
var parName = window.dialogArguments.document.getElementById("parName").value; //得到父窗口中的姓名
var parAge = window.dialogArguments.document.getElementById("parAge").value
document.getElementById("fromParName").value = parName;
document.getElementById("fromParAge").value = parAge;
}
从上面我们就可以看出,在父窗口中我们传递了window这个参数,然后在子窗口中,我们用window.dialogArguments直接到取了父窗口中id = "parName"的属性值
再来说这个返回值temp是怎么回事?
function toParent(){
var obj = new Object();
obj.childName = document.getElementById("childName").value;
obj.childAge = document.getElementById("childAge").value;
window.returnValue = obj;
window.close();
}
我们用window.returnValue的方式直接把一个对象返回到父窗口,然后父窗口根据对象中的属性直接取出其中的值就OK了
那么,我们可不可以直接调用父窗口中的方法呢?
答案是肯定的:
function fromParentFunction(){
window.dialogArguments.parFunction();
}
我们用window.dialogArguments + 父窗口的方法名,就直接可以调用父窗口的方法
上面是window.showModalDialog如何来进行子父窗口间的传递值,那么,接下来看下window.open是如何进行子父窗口间的传值:
在父窗口parent.jsp页面中:
function openChild(){
var obj = window;
obj.name = "张三";
obj.age = "18";
window.open('child.jsp','我是弹出子窗口','height=200,width=400,top=200,left=400,toolbar=no,menubar=no,
scrollbars=no, resizable=no,location=no, status=no');
}
我们定义变量obj = window,再通过属性赋值把对象传递过去,接下来看下子窗口:
function fromParent(){
alert("得到父窗口的中姓名值:"+ this.opener.name);
alert("得到父窗口中的年龄值:"+ this.opener.age);
}
利用this.opener.属性名 就可以得到父窗口中的变量值
那么如何把值子窗口中的值再返回到父窗口中呢?
function toParent(){
//把子窗口中的值传递给父窗口,document.getElementById("name").value得到子窗口的值
this.opener.document.getElementById("parName").value = document.getElementById("childName").value;
this.opener.document.getElementById("parrAge").value = document.getElementById("childAge").value;
window.close();
}
这里的parName是父窗口中的id = 'parName' ,也就是说,可以在子窗口中利用 this.opener. + 父窗口元素 赋值给父窗口
window.showModalDialog 与window.open传递参数的不同?的更多相关文章
- window.showModalDialog与window.open()使用
window.showModalDialog 有些浏览器不兼容,尝试用window.open() 封装替代,需要打开子窗口后向父窗口传递数据. <html> <script src= ...
- window.open、window.showModalDialog和window.showModelessDialog 的区别[转]
一.前言 要打开一个可以载入页面的子窗口有三种方法,分别是window.open.window.showModalDialog和window.showModelessDialog. open方法就是打 ...
- window.showModalDialog以及window.open用法简介
.可以通过window.returnValue向打开对话框的窗口返回信息,当然也可以是对象.例如:------------------------------parent.htm<script& ...
- window.showModalDialog的基本用法
window.showModalDialog的基本用法 showModalDialog() (IE 4+ 支持) showModelessDialog() (IE 5+ 支持) window.show ...
- window.showModalDialog
//新版本谷歌没有window.showModalDialog,创建一个window.openif(window.showModalDialog == undefined){ window.show ...
- window.showModalDialog()之返回值
window.showModalDialog的基本用法 showModalDialog() (IE 4+ 支持) showModelessDialog() (IE 5+ 支持) window.show ...
- window.open || window.showModalDialog || window.showModelessDialog
http://dwcmayday201204063551.iteye.com/blog/1621751 http://www.cnblogs.com/zhangyi85/archive/2009/09 ...
- javascript window.showModalDialog不兼容goole解决方案
window.showModalDialog不兼容goole解决方案 一.弹框方案: 1.window.open; 2.window.showModalDialog; 3.div制作窗口:(本节忽略) ...
- window.parent与window.opener、window.showModalDialog的区别 opener和showModalDialog刷新父页面的方法
项目中使用案例: 父窗体 <s:form namespace="/forexagent" id="listSearchForm" name="t ...
随机推荐
- php 在线 mysql 大数据导入程序
1 <?php header("content-type:text/html;charset=utf-8"); error_reporting(E_ALL); set_tim ...
- Javascript 中的小括号 “()” 的多义性
Javascript 中小括号有5 种语义 语义1:函数声明时参数表 1 function func(arg1, arg2){ 2 // ... 3 } 语义2:和一些语句联合使用以 ...
- 【Unity入门】编辑器常用视图介绍
版权声明:本文为博主原创文章,转载请注明出处. 打开Unity编辑器的主窗口,在窗口的右上角可以看到有个“Layout”按钮.这是用来对Unity编辑器主窗口上面的各个窗口面板进行布局的.通常情况下我 ...
- Python 读取excel
一.到python官网下载http://pypi.python.org/pypi/xlrd模块安装, sudo python setup.py install 二.使用介绍 1.导入模块 import ...
- 安装VMware-tools的问题
今天晚上解决了之前在跟着 Linux学习之CentOS(六)--CentOS下VMware-Tools安装 解压部分,cp 压缩文件时,没有通过命令,直接鼠标操作复制到/home/ranjiewen下 ...
- Flex通信-Java服务端通信实例
转自:http://blessht.iteye.com/blog/1132934Flex与Java通信的方式有很多种,比较常用的有以下方式: WebService:一种跨语言的在线服务,只要用特定语言 ...
- css 样式大全
字体属性:(font) 大小 {font-size: x-large;}(特大) xx-small;(极小) 一般中文用不到,只要用数值就可以,单位:PX.PD 样式 {font-style: obl ...
- ubuntu 64位系统下加速Android模拟器
安装KVM: sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils 在Postfix Configurati ...
- codeforces 601A The Two Routes(最短路 flody)
A. The Two Routes time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...
- JQuery点击收起,点击展开以及部分非空小验证
<tr> <td nowrap align="right" width="18%"> 解决方案: </td> <td ...