zoukankan      html  css  js  c++  java
  • js控制父子页面传值(iframe和window.open)

    在html中,window对象代表浏览器中一个打开的窗口,就像我们C/S中做窗体一样,在该页的window对象就是new了一个新的窗体对象。

    就像做C/S开发一样,浏览器是一个软件,每一个网页都是它new的一个对象,对象与对象的信息交流只能通过方法(前提是在自己的对象域中,当然如果两个对象在同一个作用域中,就不用那么麻烦了,但是每一个网页都是一个对象,在本对象内部作用域去访问另一个对象,就需要有到公共的方法,并且两个对象都可以接受到的。就是在后台才会有的request和response等方法)。

    所以本节讨论的:主要是在窗体自己作用域内父子页面传值,有两点

    1. iframe是html中的一个标签,也就是window对象的一个成员(尽管它是网页),对象与成员之间的信息传递是简单的
    2. js脚本window.open(网页路径),就是window对象new了一个window对象,open实际也是window对象的成员,但是它与iframe不同的是它是一个匿名对象。

    页面传值方法:

    1. iframe

                 子页面获取父页面对象方法:window.parent

                 父页面获取子页面对象方法:window.frames[iframe对象的name值]

    2. window.open()

                 子页面获取父页面对象方法: window.opener

    参考页面:http://www.jb51.net/article/25629.htm

    代码参考:

    1.父页面代码(father.html)

     1 <!DOCTYPE html>
     2 <html xmlns="http://www.w3.org/1999/xhtml">
     3 <head>
     4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
     5     <script src="../js/jquery-1.10.2.js"></script>
     6     <title></title>
     7     <script type="text/javascript">
     8         function sayOpen()
     9         {
    10             alert("I am father(设置或获取创建当前窗口的窗口的引用)");
    11         }
    12         function sayFrame() {
    13             alert("I am father(获取对象层次中的父窗口)");
    14             
    15         }
    16         function getIframe()
    17         {
    18             window.frames["one"].showSon();
    19             window.frames["two"].showIframe();
    20         }
    21     </script>
    22 </head>
    23 <body>
    24     该页面是被创建的页面:<a href="#" onclick="window.open('son.html')">创建子页</a><br />
    25     <br />
    26     <input type="button" onclick="getIframe()" value="获取子页" />
    27     <br />
    28     <iframe name="one" frameborder="0" src="son.html">
    29     </iframe>
    30     <iframe name="two" frameborder="0" src="iframe_one.html">
    31     </iframe>
    32 </body>
    33 </html>
    View Code

    2.子页面代码

    (son.html和iframe_one.html)

     1 <!DOCTYPE html>
     2 <html xmlns="http://www.w3.org/1999/xhtml">
     3 <head>
     4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
     5     <title></title>
     6     <script type="text/javascript">
     7         function showSon() {
     8             alert("I am son");
     9         }
    10     </script>
    11 </head>
    12 <body>
    13     <input type="button" onclick="window.opener.sayOpen()" value="创建页单击事件" /><br />
    14     <input type="button" onclick="window.parent.sayFrame()" value="Iframe页单击事件" /><br />
    15     
    16 </body>
    17 </html>
    View Code
     1 <!DOCTYPE html>
     2 <html xmlns="http://www.w3.org/1999/xhtml">
     3 <head>
     4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
     5     <title></title>
     6 
     7     <script type="text/javascript">
     8         function showIframe() {
     9             alert("I am iframe");
    10         }
    11     </script>
    12 
    13 </head>
    14 <body>
    15     我是子页iframe
    16 </body>
    17 </html>
    View Code

    iframe标签常用设置:

    <iframe height="300px" frameborder="no" border="0" marginwidth="0" marginheight="0" scrolling="no" allowtransparency="yes" src="../../../EFM/Model.aspx" style="overflow-x:visible;overflow-y:visible"></iframe> 

  • 相关阅读:
    zookeeper常用命令
    linux查看日志相关命令
    第三十一期: VueRouter源码浅析 传统前端和多媒体前端
    第二十八期:模型,模块,组件,框架和架构
    星际2光速注卵
    星际心得
    英语词根研究和单词记忆
    星际2如何离线模式打电脑和rpg地图练操作
    星际研究
    第一篇帖子:不利用中间变量交换两个数字的小算法题
  • 原文地址:https://www.cnblogs.com/wykLog/p/4223923.html
Copyright © 2011-2022 走看看