JavaScript子窗口调用父窗口变量和函数的方法

Posted ngulc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript子窗口调用父窗口变量和函数的方法相关的知识,希望对你有一定的参考价值。

  在做一个父窗口开启子窗口并且在子窗口关闭的时候调用父窗口的方法,达到局部刷新的目的。

  父窗口:

 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 3 <html xmlns=" http://www.w3.org/1999/xhtml">
 4 <head>
 5   <title>parent</title>
 6   <script type="text/javascript">
 7     var parentPara=parent;
 8     function parentFunction() {
 9       alert(parentPara);
10     }
11   </script>
12 </head>
13 <body>
14   <button onclick="parentFunction()">显示变量值</button>
15   <button onclick="window.open(‘child.html‘)">打开新窗口</button>
16 </body>
17 </html>

  子窗口:

 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 3 <html xmlns=" http://www.w3.org/1999/xhtml">
 4 <head>
 5   <title>child</title>
 6   <script type="text/javascript">
 7     function modify() {
 8       opener.parentPara=child;
 9     }
10   </script>
11 </head>
12 <body>
13   <button onclick="opener.parentFunction()">调用父页面的方法</button>
14   <button onclick="modify()">更改父页面中变量的值</button> 
15 </body>
16 </html>

  子页面是父页面的一个iframe

  父页面:

 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 3 <html xmlns=" http://www.w3.org/1999/xhtml">
 4 <head>
 5   <title>parent</title>
 6   <script type="text/javascript">
 7     function fill() {
 8       //alert(frame1.window.childPara);  //显示frame1内的变量值
 9       var str=document.getElementById(txt1).value; //获得文本框内输入的值
10       frame1.window.div1.innerHTML=str; //将值填入子页面的一个div中
11     }
12   </script>
13 </head>
14 <body>
15   <div style="background-color:yellow;width:300px;height:300px;">
16     父页面
17     <iframe id="frame1" src="child.html" frameborder="0" scrolling="no" width="120px" height="120px"></iframe>
18     <br/><br/><br/><br/>
19     <input id="txt1" type="text"/>
20     <button onclick="fill()">将文本框内值填充入子界面</button>
21   </div>
22 </body>
23 </html>

  子页面:

 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 3 <html xmlns=" http://www.w3.org/1999/xhtml">
 4 <head>
 5   <title>child</title>
 6   <script type="text/javascript">
 7     function fun() {
 8       parent.fill();
 9     }
10   </script>
11 </head>
12 <body>
13   <div style="background-color:lightblue;width:100px;height:100px;">
14     <b>子页面</b><br/>
15     <a href="#" onclick="fun()">同父页面按钮</a>
16     <div id="div1" style="color:red;">
17     </div>
18   </div>
19 </body>
20 </html>

  刷新父页面时,其中的iframe也会随之刷新;刷新iframe时,父页面不会刷新。

  另外,如果是在angularJS中的一个模块调用另一个模块的方法:主要思路是获取另一模块的angular和document,然后用angular.element(document.getElementById("aaa"));

其中:var angular = window.opener.angular;var document = window.opener.document;具体情况视实际情况在获取。

以上是关于JavaScript子窗口调用父窗口变量和函数的方法的主要内容,如果未能解决你的问题,请参考以下文章

js页面的父窗口如何控制关闭window.showModalDialog弹出的子窗口

js子窗口调用父窗口函数并传递对象给父窗口的方法

Delphi 如何在子窗口使用父窗口声明的变量和控件

MFC子窗口调用父窗口控件问题,望大神解救~~~

AB窗体互传参数

子iframe 怎么访问 父的 iframe方法