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. function UpdateParent()
  8. {
  9. var _parentWin = window.parent ;
  10. _parentWin.form1.username.value = "xxxx" ;
  11. }
  12. function childInvokeParent()
  13. {
  14. var parentVairous = window.parent.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. name = "button"
  25. id = "button"
  26. value = "更新主页面的UserName内容"
  27. onclick = "UpdateParent()">
  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>
  37. </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. *  因为不同于IFrame(IFrame有id,window.open()与IFrame的父子窗口的模式不同),
  9. *  所以当是通过window.open()方法打开一个新窗口使, 必须有一个新窗口的对象
  10. *  当然必须先让子窗口弹出来, 才能调用子窗口中的变量, 否则抛出异常
  11. */
  12. var OpenWindow;
  13. function openSubWin()
  14. {
  15. OpenWindow = window.open('b.html', 'newwindow', 'height=1024width=1300top=0left=0toolbar=nomenubar=yesscrollbars=yes,resizable=yes,location=nostatus=no');
  16. }
  17. function parentInvokeChild()
  18. {
  19. if(OpenWindow)//当然必须先让子窗口弹出来, 才能调用子窗口中的变量, 否则抛出异常
  20. {
  21. alert(OpenWindow.iFrameVair);
  22. }
  23. }
  24. </script>
  25. </head>
  26. <body>
  27. <form name="form1" id="form1">
  28. <input type="text" name="username" id="username"/>
  29. <input type="button" value="弹出子页面" onclick = "openSubWin()">
  30. <input type="button" value="测试调用弹出窗口中的全局变量" onclick = "parentInvokeChild()">
  31. </form>
  32. </body>
  33. </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");
在子窗口中当希望修改父窗口中的内容时,会弹出“某某”为空或不是对象的错误,而这里的“某某”就是你想修改的父窗口中的内容

javascript调用父窗口(父页面)的方法相关推荐

  1. 使用JS/Jquery获得父窗口的几个方法(笔记)

    <pre name="code" class="javascript">取父窗口的元素方法:$(selector, window.parent.do ...

  2. Vue.js如何在一个页面调用另一个同级页面的方法

    实际开发过程中,当前组件调用完方法之后,也许会调取同一级组件中的方法,本人暂时想到两种办法: 1. vm.$on(event,callback) 新建一个工具函数util.js,代码如下: impor ...

  3. window.open window.showModelDialog 打开一个新窗口/子窗口中调用父窗口的方法

    window.open 只打开一个窗口是将 oNewWindow   =   window   .   open   (   sURL   ,   sName   ,   sFeatures   , ...

  4. java弹框刷新原页面_JavaScript:关闭弹出窗口时刷新父窗口

    说明: 关闭弹出窗口时刷新父窗口也可以说是关闭子窗口时自动刷新父窗口中的信息,即用户通过window对象的open()方法打开一个新窗口(子窗口),当用 户在该子窗口中进行了数据库操作(如数据添加.修 ...

  5. qtabwidget放大_Qt自定义弹窗屏蔽父窗口(QWidget设置setWindowModality(Qt::ApplicationModal);以后再show)...

    写Qt程序时遇到一个问题: Qt自带的弹窗功能单一,所以须要自己用ui设计弹窗的内容,这样弹窗就和普通窗口一样了,但问题是这个弹窗显示后父窗口还是活动的.网上找了很久找到了解决办法: Qt::Wind ...

  6. layer.open参数;layer.open关闭事件;layer.open关闭刷新;layer.open获取子页的值;layer.open调用子页面的方法

    父页面 function layerOpen(){layer.open({type: 2,shade: [0],title: "验收申请",area: ['1024px', '68 ...

  7. javascript调用Flash里对象的方法(函数)搞了五个小时。

    搞了几个小时后,才发现,之前走的路是错的. 今天在Firefox浏览器上测试一个javascript调用Flash中的一个对象的方法时遇到问题了, 一搞就整整搞了一个下午. 我记得之前我用Flash8 ...

  8. QT 在子窗口中调用主窗口的UI

    在QT中,我们时常会需要在主窗口里添加一些子窗口,比如添加一个新的对话框,或者在TabWidget中添加tab页面.通常添加子窗口后,如果在子窗口中做了一些操作,我们需要在主窗口中通过UI控件反映出来 ...

  9. 一个html多个html文件怎么打开网页,Firefox如何单窗口多页面浏览

    Firefox单窗口多页面浏览方法. ①按下" Ctrl + 鼠标左键"点击链接. ②使用鼠标中鍵点击链接. 简介 火狐浏览器(Mozilla Firefox)是由Mozilla开 ...

最新文章

  1. android地图定位
  2. 防护很重要!教你教你认识和检验安防产品的IP防护等级
  3. 姚班学霸蝉联第一,清华再霸榜,湘潭大学表现亮眼,第四届 CCF CCSP落下帷幕...
  4. 用到的oracle sql语句-001
  5. CSS行内元素和块级元素的水平居中,垂直居中,水平垂直居中实现
  6. python线程创建对象_python 多线程(一)
  7. Scala 获取当前时间
  8. tshark/wireshark抓包小结
  9. mac系统安装python(2.7)requests库
  10. python连接数据库--查询数据
  11. Spring 多线程下注入 bean 问题详解
  12. vscode使用svn插件
  13. Vue3.0中文文档(Vue3 + TS学习资源路线)
  14. ubuntu安装的微信不能发送图片
  15. html 组合快捷键,ctrl常用组合键有哪些
  16. 零基础使用Xmind
  17. 一条Fofa搜索语法,实现批量挖洞
  18. java8中的Stream流式操作总结,List转Map或List转LinkedHashMap使用Collectors.groupingBy用法
  19. 建木(Jianmu)----迈出建木第一步创建项目分组
  20. 互联网快讯:永辉拟打造数字化零售;猿辅导,掌门教育积极布局素质教育

热门文章

  1. MySQL 配置数据库编码
  2. UMLChina: trufun Plato是中国唯一的UML建模工具
  3. linux编译安装网卡驱动详解(网卡丢包)
  4. hdu2639,第K优决策
  5. C++中四种类型装换
  6. 最感动的一首现代诗(转)(修正了一点翻译)
  7. Linux中文件系统简介
  8. 利用bat批量执行脚本文件
  9. Visual Studio 2005 Web Application Projects 正式推出
  10. MongoDB之副本集