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

  • 相关阅读:
    mac本地如何搭建IPv6环境测试你的APP
    消息通知机制(NSNotification和NSNotificationCenter)
    Xcode 6制作动态及静态Framework
    html格式化输出JSON( 测试接口)
    UIContainerView纯代码实现及原理介绍
    CocoaPods 详解之----更新篇
    使用Cocoapods创建私有podspec
    ios高效开发-正确的使用枚举(Enum)
    在Xcode6中搭建Python开发环境
    用Swift语言做App开发之单元测试
  • 原文地址:https://www.cnblogs.com/hushaojun/p/4901494.html
Copyright © 2011-2022 走看看