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程序设计有所帮助。

  • 相关阅读:
    XMPP资源绑定(Resource Binding)与单台设备登录控制
    解决Eclipse建立Maven项目后无src/main/java资源文件夹的办法
    quartz做集群配置较短的时间间隔会重复执行任务的问题
    同一服务器部署多个tomcat时的端口号修改详情
    Java RSA加密算法生成公钥和私钥
    CSS3动画(重要)
    CSS3 过渡
    CSS3 3D 转换
    CSS3 2D 转换
    CSS3 文本效果(阴影)
  • 原文地址:https://www.cnblogs.com/hushaojun/p/4901494.html
Copyright © 2011-2022 走看看