曾经有那么一道题目是关于父窗口与子窗口的数据传递问题.我当时只知道父窗口向子窗口传递数据.不知道子窗口怎么向父窗口传递数据.今天终于把这个问题解决了,呵呵,记录一下:

我权且把原始窗口叫父窗口,把从该窗口打开或弹出的窗口或对话框叫子窗口.当然打开子窗口可用window.open()或window.showModalDialog()[与window.showModelessDialog()类似].若想将父窗口的数据传递到子窗口可用URL后带请求字符串即"?id1=qurey1&id2=query2",在子窗口中用window.location.search来获取该请求字符串.再利用字符串分割便可获得数据.

下面通过例子来说一下,子窗口向父窗口传递数据.首先是使用window.open()方法打开的窗口.
主窗口中主要是

<scrīpt type="text/Javascrīpt">
<!--
function MM_openSubWin(theURL,winName,features)
{
  window.open(theURL,winName,features);
}
//-->
</scrīpt>

<form name="form1" id="form1">
<table width=300" border="0" align="center" cellpadding="0" cellspacing="0" align="center">
<tr>
 <td width="100">测试输入框</td>
 <td ><input name="to_mobile" type="text" id="to_mobile" value="" size="20" maxlength="11"> </td>
</tr>
<tr>
<td height="20" colspan="2">
<a href="#" ōnClick="MM_openSubWin('subwin.htm','测试子窗口1','width=450,height=300')"><font color="#FF6600">测试子窗口1</font></a>
</td>
 </tr>
 </table>  
 </form>

这里主要有个window.open().它很简单,有三个主要参数,第一个是打开子窗口的URL;第二个是打开子窗口的名字,可选;第三个是设置大小,工具条等,可选.

子窗口中代码主要是

<scrīpt type="text/Javascrīpt">
<!--
function ConfirmSelection_onclick()
{
  var strCallNumbers = new String();
  strCallNumbers = document.form2.mobile.value;
 window.parent.opener.document.form1.to_mobile.value = strCallNumbers;
}
//-->
</scrīpt>

<table width="300" height="26" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
 <td width="100">测试数据输入</td>
 <td >  <input name="mobile" type="text" id="mobile" value="" size="20" maxlength="11">
 </td>
</tr>
<tr> 
 <td height="12" colspan="3" bgcolor="#FFFFFF">
  <input type="submit" value="确定1" id="ConfirmSelection" name="ConfirmSelection" ōnclick="ConfirmSelection_onclick();window.close();">
  </td>
</tr>
 
</table>
</form>

这里主要是window.parent.opener,parent获取对象层次中的父窗口;opener设置或获取创建当前窗口的窗口的引用.使用它就可以对父窗口进行传值.

第二种方法是使用弹出对话框来实现.父窗口的代码主要有:

<scrīpt type="text/Javascrīpt">
<!--
function MM_showSubWin(theURL,varName,features)
{
 //window.showModalDialog(theURL,varName,features);
 window.showModelessDialog(theURL,varName,features);
}
//-->
</scrīpt>

<form name="form1" id="form1">
<table width=300" border="0" align="center" cellpadding="0" cellspacing="0" align="center">
<tr>
 <td width="100">测试输入框</td>
 <td ><input name="to_mobile" type="text" id="to_mobile" value="" size="20" maxlength="11"> </td>
</tr>
<tr>
 <td height="20" colspan="2">
  <a href="#" ōnClick="MM_showSubWin('subwin.htm',window,'')"><font color="#FF6600">测试子窗口2</font></a>
 </td>
</tr>
</table>  
</form>

这里主要涉及window.showModalDialog()和window.showModelessDialog().二者的功能类似,都是打开指定的对话框,主要区别是:
  showModalDialog:被打开后就会始终保持输入焦点。除非对话框被关闭,否则用户无法切换到主窗口。类似alert的运行效果。
 showModelessDialog:被打开后,用户可以随机切换输入焦点。对主窗口没有任何影响.
注意为了省事,传递变量名时直接将"window"传递过去,即showModalDialog("URL",window,"")

而子窗口对话框代码主要是

<scrīpt type="text/Javascrīpt">
<!--
function ConfirmSelection_onclick2()
{
  var strCallNumbers = new String();
  strCallNumbers = document.form2.mobile.value;
 window.dialogArguments.document.form1.to_mobile.value = strCallNumbers;
}
//-->
</scrīpt>

<table width="300" height="26" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
 <td width="100">测试数据输入</td>
 <td >  <input name="mobile" type="text" id="mobile" value="" size="20" maxlength="11">
 </td>
</tr>
<tr> 
 <td height="12" colspan="3" bgcolor="#FFFFFF">
  <input type="submit" value="确定2" id="ConfirmSelection2" name="ConfirmSelection2" ōnclick="ConfirmSelection_onclick2();window.close();">  </td>
</tr>
 
</table>
</form>

你如果不想要对话框链接时不弹出新窗口就在<head />中添加<base target="_self">代码.这里传递数据用到了window.dialogArguments,它用来设置或获取传递给模式对话框窗口的变量或变量数组.

转载于:https://www.cnblogs.com/jackljf/archive/2009/05/05/3589166.html

父窗口与子窗口的数据传递问题相关推荐

  1. mfc获取子窗口句柄_前端设计-JavaScript中父窗口与子窗口间的通信

    父窗体与子窗体之间的通信 在之前文章讲解windows程序设计过程中,我们曾描述了windows程序窗口之间通信与控制实现方法与过程,如窗体之间参数传递等.本文主要从Web程序开发前端JavaScri ...

  2. 安卓使用intent切换到同级窗口和子窗口,并从子窗口中获取返回数据

    全栈工程师开发手册 (作者:栾鹏) 安卓教程全解 安卓使用intent切换窗口,并从子窗口中获取返回数据 切换到应用内部同级窗口,同时传递数据 窗口 Intent_Activity 切换到应用内同级窗 ...

  3. System.InvalidOperationException:“寄宿的 HWND 必须是指定父级的子窗口。”

    当试图在 WPF 窗口中嵌套显示 Win32 子窗口的时候,你有可能出现错误:"寄宿的 HWND 必须是指定父级的子窗口.". 这是很典型的 Win32 错误,本文介绍如何修复此错 ...

  4. iframe 父窗口和子窗口相互的调用方法集锦

    一.父窗口调用iframe子窗口方法 1.HTML语法:<iframe name="myFrame" src="child.html"></i ...

  5. Electron中打开和关闭子窗口以及子窗口向父窗口传值

    场景 用HTML和CSS和JS构建跨平台桌面应用程序的开源库Electron的介绍以及搭建HelloWorld: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/a ...

  6. 父窗口控制子窗口的行为-打开,关闭,重定位,回复

    1,技术要点可以利用windows的open和closed来对子窗口的控制 应用领域:需要父窗口和子窗口之间进行互动. 代码如下: 代码  1 <!DOCTYPE html PUBLIC &qu ...

  7. 总结JavaScript(Iframe、window.open、window.showModalDialog)父窗口与子窗口之间的操作

    前些日子,一直奔波于这三种操作,想想以后会常用,干脆整理下来,供自己以后查看.也给大家分享一下! 以下面写出自己认为有用的操作和代码. 第一次在园里面写,肯定有很多不足够之处,希望大家多多指点. 一. ...

  8. Visual C#中父窗口和子窗口之间实现控件互操作

    在.NET 1.0和1.1的版本中,我们要实现父窗口和子窗口之间的互操作,有两种简单的方法. 第一种,在主窗体类中定义一个静态成员,来保存当前主窗体对象,例如: public static yourM ...

  9. 父窗口、子窗口和Silverlight之间的相互调用

    啊哈~ 爷爷,爸爸,儿子~ 三代同堂~ 前两天做 silverlight 的东西,主页面打开一个子页面,然后子页面中包含一个 silverlight 应用程序 那难免会涉及到他们三者相互调用的问题 其 ...

最新文章

  1. 手机与笔记本蓝牙配对
  2. Python中的join()函数的用法
  3. ES6-24 生成器与迭代器的应用
  4. 10.28T5 tarjan+dfs
  5. 源码编译搭建LAMP环境
  6. Java中try与catch的使用
  7. 战战兢兢尝试tensorflow2.0
  8. 央企控股及并购重组概念股名单
  9. Tibco Designer -- 循环遍历
  10. UOJ#449 喂鸽子
  11. 安卓APP开发日记1——名为Another的日记APP开发
  12. 制作mac系统引导盘
  13. 《经济学通识》:人类会受到“东西不够、生命有限、相互依赖、需要协调”四方面的限制,影响我们的衣食住行
  14. 蹦迪--我的黑白玫瑰~!
  15. c语言规定 标识符由,【填空题】C语言的标识符命名规则规定标识符可以由字母数字和下划线组成,首字符不能是 。 (4.0分)...
  16. 中国发射的世界首颗量子卫星“墨子号”,到底是干什么用的?
  17. 2019.08_【FSGAN】_Subject Agnostic Face Swapping and Reenactment 论文翻译
  18. 公开密钥基础设施PKI
  19. 百度云网速慢?普通VIP也限速?用户激励措施太套路?Pandownload被举报?这些统统没关系,我们自己搭建一个私人云盘服务器
  20. oracle中强制走索引,Oracle数据库强制索引

热门文章

  1. python 画三维函数图-Python之Numpy:二元函数绘制/三维数据可视化/3D
  2. 学python需要什么文化基础-数据分析需要掌握那些基础知识?
  3. 有道精品课python-Python:7行代码爬取有道词典
  4. python专科就业难吗-python好就业吗
  5. python主要用来开发什么-python主要用于什么开发?
  6. python一千行入门代码-Python 有哪些一千行左右的经典练手项目?
  7. winpython使用教程-如何使用Python自动控制windows桌面
  8. python单词意思-python 前面几个单词含义
  9. python3爬虫实例-python3 网络爬虫 实例1
  10. python写学生系统-用python编写学生管理系统