产品
解决方案
文档与社区
权益中心
定价
云市场
合作伙伴
支持与服务
了解阿里云
备案
控制台
登录/注册
开发者社区
首页
探索云世界
新手上云
云上应用构建
云上数据管理
云上探索人工智能
云计算
弹性计算
无影
存储
网络
倚天
云原生
容器
serverless
中间件
微服务
可观测
消息队列
数据库
关系型数据库
NoSQL数据库
数据仓库
数据管理工具
PolarDB开源
向量数据库
热门
Modelscope模型即服务
弹性计算
云原生
数据库
物联网
云效DevOps
龙蜥操作系统
平头哥
钉钉开放平台
大数据
大数据计算
实时数仓Hologres
实时计算Flink
E-MapReduce
DataWorks
Elasticsearch
机器学习平台PAI
智能搜索推荐
人工智能
机器学习平台PAI
视觉智能开放平台
智能语音交互
自然语言处理
多模态模型
pythonsdk
通用模型
开发与运维
云效DevOps
钉钉宜搭
支持服务
镜像站
码上公益
探索云世界
云上快速入门,热门云上应用快速查找
了解更多
问产品
动手实践
考认证
TIANCHI大赛
活动广场
活动广场
丰富的线上&线下活动,深入探索云世界
任务中心
做任务,得社区积分和周边
高校计划
让每位学生受益于普惠算力
训练营
资深技术专家手把手带教
话题
畅聊无限,分享你的技术见解
开发者评测
最真实的开发者用云体验
乘风者计划
让创作激发创新
阿里云MVP
遇见技术追梦人
直播
技术交流,直击现场
下载
下载
海量开发者使用工具、手册,免费下载
镜像站
极速、全面、稳定、安全的开源镜像
技术资料
开发手册、白皮书、案例集等实战精华
插件
为开发者定制的Chrome浏览器插件
开发者社区
开发与运维
文章
正文
子窗口和父窗口交互
2017-11-26
882
版权
版权声明:
本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《
阿里云开发者社区用户服务协议
》和 《
阿里云开发者社区知识产权保护指引
》。如果您发现本社区中有涉嫌抄袭的内容,填写
侵权投诉表单
进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
简介:
+关注继续查看
最近项目开发中需要子窗口和父窗口交互的内容,基本上无非就是把子窗口的信息传递给父窗口,并且关闭自己等等,或者是父窗口把自己的信息传递给子窗口等等。
1。父窗口传递信息给子窗口
看代码实例:
<
script
language
=javascript
>
function
outPut()
{
//
获取父窗口的文本信息赋值给text
var
text
=
document.abc.text.value;
//
打开子窗口,并且把操作句柄赋值给win变量,以下所有操作都是针对win对象的
var
win
=
window.open(
""
,
"
mywin
"
,
"
menubar=no,width=400,height=100,resizeable=yes
"
);
//
输出基本信息
win.document.writeln(
"
<title>输出结果</title>
"
);
win.document.writeln(
"
你的信息是:<p>
"
);
//
输出从父窗口获取的信息
win.document.writeln(text);
win.document.close();
win.focus();
}
</
script
>
<
form
name
=abc
method
=post
>
<
input
type
=text
name
=text
size
=50
>
//调用上面的函数
<
input
type
=button
value
=提交
onClick
="outPut()"
>
</
form
>
2。子窗口传递参数给父窗口
我们对上面的代码进行改造:
<
script
language
=javascript
>
function
outPut()
{
var
text
=
document.abc.text.value;
var
win
=
window.open(
""
,
"
mywin
"
,
"
menubar=no,width=400,height=100,resizeable=yes
"
);
win.document.writeln(
"
<title>输出结果</title>
"
);
win.document.writeln(
"
你的信息是:<p>
"
);
win.document.writeln(text);
win.document.writeln(
"
<input type=text name=child value=子窗口信息>
"
);
//
对子窗口本身操作,使用self对象,对父窗口操作使用opener对象,这是关键
//
把子窗口中表单的值回传给父窗口,取代父窗口表单以前的值,然后关闭子窗口
win.document.writeln(
"
<input type=button value=关闭自己 onClick='window.opener.abc.text.value=self.child.value;self.close()'>
"
);
//
可以控制关闭父窗口
win.document.writeln(
"
<input type=button value=关闭父窗口 onClick='window.opener.opener=null;window.opener.close()'>
"
);
//
刷新父窗口
win.document.writeln(
"
<input type=button value=刷新父窗口 onClick='window.opener.location.reload()'>
"
);
win.document.close();
win.focus();
}
</
script
>
<
form
name
=abc
method
=post
>
<
input
type
=text
name
=text
size
=50
>
<
input
type
=button
value
=提交
onClick
="outPut()"
>
</
form
>
3。不是同页面的子窗口和父窗口交互
假设我们涉及到外部程序,比如php、asp等等,那么我们处理的可能是两个页面,比如,上传功能,我们就是需要打开一个新页面,然后再把新页面中的值传递给父页面。
局部代码实例:
<
input
type
="input"
value
=""
name
="input_tag"
id
= "input_tag"
onKeyUp
="clearPreTagStyle()"
size
="40"
>
<
input
type
="hidden"
value
="0"
name
="tagid"
id
="tagid"
>
<
input
type
="button"
value
="标签"
onclick
="popUpWindow('tag.php?tag='+escape(document.tryst_form.input_tag.value))"
>
以上是父窗口的部分代码,里面的popUpWindow是封装好的window.open函数,所以理解面面的tag.php是另外一个页面就可以,我们需要把当前表单中的值提交给tag.php页面去处理。
tag.php部分代码:
查询标签结果:
<
a
href
="#"
name
="tag_1"
>
生活
</
a
><
a
href
="#"
onclick
="opener.document.tryst_form.input_tag.value = document.tag_1.innerHTML"
>
加入该标签
</
a
>
<
a
href
="#"
name
="tag_2"
>
生活秀
</
a
><
a
href
="#"
onclick
="opener.document.tryst_form.input_tag.value = document.tag_2.innerHTML"
>
加入该标签
</
a
>
这个就是我们的子窗口,我们要把tag_1和tag_2返回到子窗口中,虽然他们不是同一个页面。这里有个知识点,就是我们如何获取连接中的值,我们使用innerHTML属性:document.tag_2.innerHTML 这个就是我们获取了tag_2的值“生活秀”,我们也能使用其他方法获取,比如:document.all.tag_2.innerHTML,或者this.innerHTML就是指本身的链接的值。
访问父窗口也是使用opener对象来处理:opener.document.tryst_form.input_tag.value,就能够改变父窗口的值。
1
. 在Asp.net实用技巧(
1
) 中提到了如何刷新父页面,那么如果要刷新父页面的父页面的父页面了?那就是刷新祖先页面RefreshAncestorPage。
RefreshAncestorPage
RefreshAncestorPage
2
.如何刷新祖先页面中的某个frame中的page了?
RefreshFrameInAncestorPage
RefreshFrameInAncestorPage
3
.如何刷新本页面中的其它框架了?
RefreshTargetFrameInSamePage
RefreshTargetFrameInSamePage
4
.如何调用祖先页面的脚本?
CallAncestorScriptMethod
CallAncestorScriptMethod
本文转自高海东博客园博客,原文链接:http://www.cnblogs.com/ghd258/archive/2006/03/01/340305.html,如需转载请自行联系原作者
5
.如何调用本页面中其它框架page的脚本?
CallTargetFrameScriptMethodInSamePage
CallTargetFrameScriptMethodInSamePage
文章标签:
PHP
JavaScript
老朱教授
目录
相关文章
流楚丶格念
|
C#
c#窗体——显示子窗口父窗口
c#窗体——显示子窗口父窗口
流楚丶格念
222
0
0
1808604787721125
Qt父窗口与子窗口数据交互(用拾色器举例)
Qt父窗口与子窗口数据交互(用拾色器举例)
1808604787721125
171
0
0
杰克.陈
父窗口与子窗口的层次关系
原文:父窗口与子窗口的层次关系 父窗口与子窗口的层次关系 周银辉 关于子窗体的层级关系总结一下哈,希望能对大家有些帮助 假设有这样两个窗体:RootWindow,SubWindow,在RootW...
杰克.陈
861
0
0
科技小先锋
关闭子窗口刷新父窗口
科技小先锋
932
0
0
科技小能手
MDI子窗口间的数据共享
科技小能手
814
0
0
余二五
|
JavaScript
子窗口关闭,父窗口有选择刷新
余二五
1038
0
0
技术小牛人
Silverlight子窗口(ChildWindow)传递参数到父窗口演示
技术小牛人
1046
0
0
科技小先锋
|
JavaScript
前端开发
Go
子窗口向父窗口传值
科技小先锋
987
0
0
杨粼波
关于HGE渲染窗口作为子窗口时无法得到窗口消息的问题以及解决办法
杨粼波
1250
0
0
杨粼波
|
Windows
鼠标下面子窗口响应滚轮消息 WM_MOUSEWHEEL,而不需要焦点,也不改变焦点。
杨粼波
1780
0
0
热门文章
最新文章
1
阿里云云盾介绍
2
《Unity 3.x游戏开发实例》——1.4节实践时刻——安装Unity网络播放器
3
如何熟悉一个开源项目?
4
libvlc media player in C# (part 2)
5
优化方法进阶—定位子函数的开销
6
js冲刺一下
7
Exchange 2007 SP1 如何定时清理日志???
8
连续子数组的最大和
9
uSens与台湾厂商LEAPSY合作 推出全球首款内嵌自然手势AR头显
10
【Linux设备驱动】--0x00简单的模块
1
C# | System.IO.Pipelines 很酷的读写数据流方式!
11
2
C# | 导出DataGridView中的数据到Excel、CSV、TXT
7
3
C# | 二进制字符串(“101010101”)、字节数组(byte[])互相转换
6
4
C#调试与测试 | DebuggerDisplay使用技巧
6
5
C#调试与测试 | Assert(断言)
7
6
C# | 对象池
9
相关产品
云迁移中心
文档详情
产品详情
相关电子书
更多
低代码开发师(初级)实战教程
阿里巴巴DevOps 最佳实践手册
冬季实战营第三期:MySQL数据库进阶实战
推荐文章
更多
重磅来袭!参与评测赢Iphone14 pro!
文件存储NAS评测征集令!
招募!寻找技术人的伯乐!
乘风者计划邀您入驻社区,精彩权益即刻享
下一篇
【ECS生长万物之开源】手动部署Java Web环境(CentOS 7)