zoukankan      html  css  js  c++  java
  • JavaScript子窗口调用父窗口变量和函数的方法

    本文实例讲述了JavaScript子窗口调用父窗口变量和函数的方法。分享给大家供大家参考。具体如下:

    示例1:子窗口是新打开的窗口

    父窗口:

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

    子窗口:

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

    只要在变量和函数前面加opener就可以访问指定资源了。

    但是当父窗口被关闭时,再如此使用会报一个错:"被调用的对象已与其客户端断开连接。"

    示例2:子页面是父页面的一个iframe

    父页面:

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

    子页面:

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

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

    希望本文所述对大家的JavaScript程序设计有所帮助。

  • 相关阅读:
    AOP面向切面编程基础
    记第一次年会主持
    Tomcat服务器部署JavaWeb项目War包基本步骤
    VM14无法将网络更改为桥接状态:没有未桥接的主机网络适配器
    Ubuntu 16.04 安装 IDEA
    Linux之文件挂载
    图片大小
    打开文件、
    Setup Factory
    Repeater获取某一行TextBox值
  • 原文地址:https://www.cnblogs.com/hushaojun/p/4901494.html
Copyright © 2011-2022 走看看