javascript调用父窗口(父页面)的方法

JavaScript调用父窗口方法的实现方式 这些方法可根据具体场景选择使用。使用window.parent对象适用于嵌套的iframe情况,使用window.opener对象适用于弹出窗口情况,而postMessage方法则是一种通用的跨窗口通信方式,适用于不同窗口之间的交互。在JavaScript编程中,有时候我们需要在一个嵌套的iframe或弹出窗口中调用父窗口(即包含iframe或弹出窗口的窗口)的方法。这种情况下,我们可以使用一些方法来实现这样的交互。希望以上解答能够帮助到你。 阅读详情
window.parent与window.opener的区别 javascript调用主窗口方法
1:   window.parent 是iframe页面调用父页面对象
举例:
a.html

Html代码   收藏代码
  1. <html>  
  2.     <head><title>父页面</title></head>  
  3. <body>  
  4.     <form name="form1" id="form1">  
  5.          <input type="text" name="username" id="username"/>  
  6.     </form>  
  7.     <iframe src="b.html" width=100%></iframe>  
  8. </body>  
  9. </html>  
 
如果我们需要在b.htm中要对a.htm中的username文本框赋值,就如很多上传功能,上传功能页在Ifrmae中,上传成功后把上传后的路径放入父页面的文本框中
我们应该在b.html中写

Html代码   收藏代码
  1. <script type="text/javascript">  
  2.     var _parentWin = window.parent ;  
  3.     _parentWin.form1.username.value = "xxxx" ;  
  4. </script>  

实例地址:   http://www.cnspry.cn/blog/attachments/window.parent 实例/a.html
源码:
1.a.html

Html代码   收藏代码
  1. <html>  
  2. <head>  
  3.     <title>主页面</title>  
  4.     <script>  
  5.         /** 为测试IFrame子窗口调用父窗口的全局变量而添加的测试变量 */  
  6.         var parentVairous = "为测试IFrame子窗口调用父窗口的全局变量而添加的测试变量";  
  7.         function parentInvokeIFrame()  
  8.         {  
  9.                 var iframeTest = document.frames["iframeTest"]; //使用document.getElementById("iframeTest");同样可以  
  10.                 alert(iframeTest.document.body.innerHTML);  
  11.                 alert(iframeTest.iFrameVair);  
  12.         }  
  13.     </script>  
  14. </head>  
  15. <body>  
  16. <form name="form1" id="form1">  
  17.     <input type="text" name="username" id="username"/>  
  18.     <input type = "button" value = "父窗口调用IFrame子窗口中的内容" onclick = 'parentInvokeIFrame()'/>  
  19. </form>  
  20. <iframe src="b.html" width = '100%' id = 'iframeTest'></iframe>  
  21. </body>  
  22. </html>  

1.b.html

Html代码   收藏代码
  1. <html>  
  2.      <head>  
  3.          <title></title>  
  4.          <script type="text/javascript">  
  5.             /** 为测试父窗体调用IFrame子窗体的全局函数而添加的子窗口全局函数 */  
  6.          var iFrameVair = "测试父窗体调用IFrame子窗体的全局函数";  
  7.            
  8.          function UpdateParent()  
  9.          {  
  10.              var _parentWin = window.parent ;  
  11.              _parentWin.form1.username.value = "xxxx" ;  
  12.          }  
  13.            
  14.          function childInvokeParent()  
  15.          {  
  16.                 var parentVairous = window.parent.window.parentVairous;  
  17.                 alert(parentVairous);     
  18.          }  
  19.        </script>  
  20.     </head>  
  21. <body>  
  22.      <form name="form1" id="form1">  
  23.          <p>  </p>  
  24.          <p align="center">  
  25.             <input type = "button"   
  26.                    name = "button"   
  27.                    id = "button"   
  28.                    value = "更新主页面的UserName内容"   
  29.                    onclick = "UpdateParent()">  
  30.             <input type = "button"  
  31.                          name = "button2"  
  32.                          id = "button2"  
  33.                          value = "测试IFrame子窗口调用父窗口的全局变量"  
  34.                          onclick = "childInvokeParent();"/>  
  35.          </p>  
  36.          <p>  </p>  
  37.      </form>  
  38. </body>  
  39. </html>  
 
ps:不能跨域获取,例如iframe的src是'http://www.xxx.ccc/'就不可以

2:   window.opener 是window.open 打开的子页面调用父页面对象
实例地址:   http://www.cnspry.cn/blog/attachments/window.opener 实例/a.html

源码:
2.a.html

Html代码   收藏代码
  1. <html>  
  2. <head>  
  3.      <title>主页面</title>  
  4.      <script type="text/javascript">  
  5.      /** 为测试IFrame子窗口调用父窗口的全局变量而添加的测试变量 */    
  6.      var parentVairous = "为测试IFrame子窗口调用父窗口的全局变量而添加的测试变量";   
  7.        
  8.      /**   
  9.       *  因为不同于IFrame(IFrame有id,window.open()与IFrame的父子窗口的模式不同),  
  10.       *  所以当是通过window.open()方法打开一个新窗口使, 必须有一个新窗口的对象   
  11.       *  当然必须先让子窗口弹出来, 才能调用子窗口中的变量, 否则抛出异常  
  12.       */  
  13.      var OpenWindow;  
  14.        
  15.      function openSubWin()  
  16.      {  
  17.          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');  
  18.      }  
  19.      function parentInvokeChild()    
  20.      {    
  21.          if(OpenWindow)//当然必须先让子窗口弹出来, 才能调用子窗口中的变量, 否则抛出异常           
  22.          {  
  23.                alert(OpenWindow.iFrameVair);  
  24.          }  
  25.      }   
  26.      </script>  
  27. </head>  
  28. <body>  
  29.     <form name="form1" id="form1">  
  30.         <input type="text" name="username" id="username"/>  
  31.         <input type="button" value="弹出子页面" onclick = "openSubWin()">  
  32.         <input type="button" value="测试调用弹出窗口中的全局变量" onclick = "parentInvokeChild()">  
  33.     </form>  
  34. </body>  
  35. </html>  

2.b.html
 
Html代码   收藏代码
  1. <html>  
  2.     <head>  
  3.         <title>子页面</title>  
  4.         <script type="text/javascript">  
  5.          /** 为测试父窗体调用IFrame子窗体的全局函数而添加的子窗口全局函数 */    
  6.          var iFrameVair = "测试父窗体调用IFrame子窗体的全局函数";  
  7.          function UpdateParent()  
  8.          {  
  9.               var _parentWin = window.opener;  
  10.               _parentWin.form1.username.value = "xxxx" ;  
  11.          }  
  12.          function childInvokeParent()    
  13.          {    
  14.               var parentVairous = window.opener.window.parentVairous;    
  15.               alert(parentVairous);       
  16.          }  
  17.         </script>  
  18.     </head>  
  19. <body>  
  20. <form name="form1" id="form1">  
  21. <p>  </p>  
  22. <p align="center">  
  23.     <input type="button"   
  24.                onclick = "UpdateParent();"   
  25.                name="button"   
  26.                id="button"   
  27.                value="更新主页面的UserName内容">  
  28.     <input type = "button"    
  29.            name = "button2"    
  30.            id = "button2"    
  31.            value = "测试IFrame子窗口调用父窗口的全局变量"    
  32.            onclick = "childInvokeParent();"/>    
  33. </p>  
  34. <p>  </p>  
  35. </form>  
  36. </body>  
经过hanjs的提醒,确实需要注意的是,模态窗口的子窗口是没有办法修改父窗口页面中的任何内容的。
例如修改: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');
为:OpenWindow = window.showModalDialog("b.html",'newwindow',"dialogHeight:100px,center:yes,resizable:no,status:no");
在子窗口中当希望修改父窗口中的内容时,会弹出“某某”为空或不是对象的错误,而这里的“某某”就是你想修改的父窗口中的内容
Keil调试技巧:3种方法查看Cortex-M4的SCB寄存器(含CPUID内存映射解析) 本文详细介绍了在Keil MDK中查看Cortex-M4内核SCB寄存器的三种实战方法:使用Watch窗口进行符号化观察、通过Memory窗口直接查看物理内存映射,以及利用SFR寄存器浏览器解析位域信息。文章重点解析了CPUID寄存器的内存映射地址(0xE000ED00)及其位域含义,帮助开发者深入理解处理器身份识别与底层调试技巧,提升嵌入式系统调试效率。 阅读详情

相关推荐

跟着团子学SAP CO:熟练使用结果分析码实现各个场景下收入成本的匹配(一) KKA2/CJ88

PS模块中对财务顾问最难的点在于项目结算,特别是销售型的项目结算。针对客户型项目结算我列举了以下常见的收入成本匹配的一些场景: (1)在项目执行过程中会多次开票,但由于各期成本浮动很大(如前期可能只涉及一些人工、中期全是比较金额较大的材料费),所以希望开票的时候能通过合理的一些指标进行主营业务成本与主营业务收入的匹配。 (2)项目过程中会多次开票,开票确认主营业务收入时,直接将累计发生的实际成本结转为主营业务成本。 (3)项目过程中虽多次开票,但不确认收入,所有发生的实际成本月末计算为在制品,最后项目一次性

Lucas1211的博客 9536

js调用父窗口(父页面)的方法

window.parent与window.opener的区别 javascript调用主窗口方法 1:   window.parent 是iframe页面调用父页面对象 举例: a.html Html代码   html>       head>title>父页面title>head>   body>       form name="form1"

yunliupan的专栏 5361

C#实战:通过ZPL指令与斑马打印机交互及状态监控全解析

本文全面解析了在C#中通过ZPL指令与斑马打印机进行交互及状态监控的实战方法。文章详细介绍了TCP/IP网络打印和Windows Raw打印两种核心连接方式,并深入讲解了ZPL指令的构建。重点阐述了通过SGD命令和斑马官方SDK实现实时打印状态监控的策略,为工业自动化场景下的可靠打印提供了完整解决方案。

weixin_29294395的博客 117

javascript(js)对子窗口和父窗口的一些操作方法

1.打开一个子窗口 window.open(URL,windowName,parameters); (选)为不是必须参数 URL: 描述要打开的窗口的URL地址,如何为空则不打开任何网页; (选) windowName:描述被打开的窗口的民称,可以使用'_top'、'_blank'等内建名称,这里的名称跟里的target属性是一样的。 (选) parameters:描述被打开的窗口的参

fubo1990的博客 725

细聊Oracle通过ODBC数据源连接SQL Server数据库

    类似文章搜索引擎上有很多,内容大致相同,今天所谓细聊是因为我在借鉴这些文章时候走了些弯路,所以写此文,为自己备忘,同时如果能为初涉此处知识点的小伙伴提供些帮助就更好了,废话不多说。    我的应用场景:    项目系统使用oracle数据库,与客户的第三方系统供应商实现资源共享,对方为sql server数据库;    我的测试开发环境为64bitwin7PC机,本机上装有64位Oracl...

xueren_83的博客 1万+

QuestaSim使用Xilinx库的设置

安装QuestaSim

miracle_eicont的专栏 3410

js中父子页面方法、变量互调

(1)子页面调用父页面的方法或者变量:方法 : window.parent.aa();//调取aa函数变量 : 子页面中得到id为aaa的文本框的值window.parent.$("#aaa").val(); //jquerywindow.parent.getElementById("aaa").value;...

qq_41082640的博客 1341

思科模拟器CIsco Packet Tracer利用三层交换机实现VLAN间路由

版权声明:如果对大家有帮助,大家可以自行转载的。 1.技术原理: 三层交换机具备网络层的功能,实现 VLAN 相互访问的原理是:利用三层交换机的路由功能,通过识别数据包的 IP 地址,查找路由表进行选路转发,三层交换机利用直连路由可以实现不同 VLAN 之间的相互访问。三层交换机给接口配置 IP 地址。采用 SVI(交换虚拟接口)的方式实现 VLAN 间互连。SVI 是指为交换机中的VLAN 创建...

qq_37992321的博客 1万+

js父子页面相互调用变量及方法

原文:http://www.cnblogs.com/huangshuqiang/p/5734358.html (1)子页面调用父页面的方法或者变量: window.parent.方法()或者变量名 window.parent相当于定位到父页面  之后的操作和在父页面中写代码一样写 window.parent.aa();//调取aa函数 window.parent

Dzq_Boyka的博客 2788

从原理到应用:深入解析双编码器在机器人关节力矩感知中的实现

本文深入解析了双编码器方案在机器人关节力矩感知中的实现原理与应用。该方案通过在电机侧和输出侧分别安装编码器,利用两者位置差异间接高精度计算外力,克服了传统电流环精度不足和扭矩传感器成本高昂的缺点。它为实现协作机器人的丝滑拖动示教、灵敏碰撞检测以及足式机器人的动态平衡与柔顺控制提供了关键技术支撑,是目前高性能机器人力控的主流选择。

t8u9v0w1x的博客 664

Vue+OpenLayers:解决中国境内OpenStreetMap地图加载问题

然而,在使用OpenLayers和Vue框架搭建地图应用时,很多中国开发者可能会遇到一个常见问题:OpenStreetMap(OSM)地图无法正常加载。为了解决这个问题,我们可以使用其他方式获取地图数据,比如使用国内的地图服务提供商。通过使用国内地图服务商提供的地图数据,我们可以解决OpenStreetMap地图加载问题。然后,我们创建一个OpenLayers地图对象,并指定地图图层的源为国内地图服务商提供的地图URL。属性,可以将地图的中心点和缩放级别调整到我们需要的位置。

CodeWhizZ的博客 8275

javascript_调用父窗口(父页面)的方法

via: http://www.php100.com/html/webkaifa/javascript/2009/0213/1658.html   window.parent与window.opener的区别 javascript调用主窗口方法 1:   window.parent 是iframe页面调用父页面对象 举例: a.html Html代码 &lt;html&gt;    ...

ALL TECHNOLOGIES ARE CLOUDS 336

手把手教你学simulink(69.3)--毫米波5G/6G 系统场景实例设计并实现基于Simulink的毫米波多用户MIMO通信系统模型

毫米波频段(30 GHz到300 GHz)因其高带宽和高速率特性,成为5G和未来6G通信系统的理想选择。然而,毫米波信号的传播特性较差,容易受到大气吸收、雨衰、建筑物遮挡等因素的影响。为了克服这些挑战并提高通信容量,多用户MIMO(MU-MIMO, Multi-User Multiple-Input Multiple-Output)技术被广泛应用。多用户MIMO技术通过在基站和多个用户之间同时传输多个数据流,充分利用空间资源,从而显著提升系统容量和频谱效率。

MHD0815的博客 495

javascript调用父窗口(父页面)的方法[摘自网上]

window.parent与window.opener的区别 javascript调用主窗口方法1: window.parent 是iframe页面调用父页面对象举例:a.html Html代码 <html><head><title>父页面</title></head><body>...

weixin_30892037的博客 163

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

html调用父页面的函数,JavaScript子窗口调用父窗口变量和函数的方法

本文实例讲述了JavaScript子窗口调用父窗口变量和函数的方法。分享给大家供大家参考。具体如下:示例1:子窗口是新打开的窗口父窗口:/p>"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">parentvar parentPara='parent';function parentFunction() {alert(pa...

weixin_39534208的博客 348

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

javascript 父窗口(父页面)— 子窗口 (子页面)互相调用的方法

javascript调用父窗口(父页面)的方法 window.parent与window.opener的区别 javascript调用主窗口方法1:   window.parent 是iframe页面调用父页面对象举例:a.html &lt;html&gt; &lt;head&gt;&lt;title&gt;父页面&lt;/title&gt;&lt;/head&gt; &lt;body...

天青色等烟雨 而我在等你 2488

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

iFrame 调用父窗口(父页面)的方法

1、对父窗口里Form元素的访问 在DHTML Javascript代码里,window.parent 是iframe页面调用父页面对象,可以直接引用。 比如,我们需要在b.htm中要对a.htm中的username文本框赋值,我们应该在b.html中写 ps:不能跨DNS域获取,例如iframe的src是’http://www.xxx.ccc/’就不可以 ——————————————————

嘿嘿…… 1906
上一篇: js页面跳转常用的几种方式
下一篇: js里父页面与子页面的相互调用
ole_triangle_java
博客等级 码龄10年 82粉丝 83原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值