• Iframe父页面与子页面之间的相互调用


    iframe元素就是文档中的文档。

    window对象: 浏览器会在其打开一个HTML文档时创建一个对应的window对象。但是,如果一个文档定义了一个或者多个框架(即:包含一个或者多个frame或者iframe标签),浏览器就会为原始文档创建一个window对象,再为每个iframe创建额外的window对象,这些额外的window对象是原始窗口的子窗口。
    contentWindow: 是指指定的iframe或者iframe所在的window对象

    Demo1

    父页面fu.html:

    <!DOCTYPE html>
    <html lang="en">
        <head>
            <meta charset="utf-8">
            <title>父页面</title>
        </head>
        <body>
        <input type=button value="调用子页面中的函数childSay函数" onclick="callChild()">
        <iframe id="myFrame" src="zi.html"></iframe>
        <script type="text/javascript">
    function parentSay() {
    alert("我是父页面中的方法");
    }
    function callChild()
    {
    document.getElementById("myFrame").contentWindow.childSay();
    }
        </script>
        </body>
    </html>

    子页面zi.html

    <!DOCTYPE html>
    <html lang="en">
        <head>
            <meta charset="utf-8">
            <title>子页面</title>
        </head>
        <body>
        <input type=button value="调用父页面中的parentSay()函数" onclick="callParent()">
        <script type="text/javascript">
    function childSay()
    {
    alert("我是子页面的say方法");
    }
    function callParent() {
    parent.parentSay();
    }
        </script>
        </body>
    </html>

    Demo2

    父页面iframe1.html:

    <!DOCTYPE html>
    <html lang="en">
        <head>
            <meta charset="utf-8">
            <title>父页面与子页面之间的调用</title>
        </head>
        <body>
        <iframe src="http://localhost/iframe/iframe3.html" id="iframe3"></iframe>
        <iframe src="http://localhost/iframe/iframe2.html" id="iframe2"></iframe>
        <div class="iframe1">我是父页面</div>
        <script type="text/javascript">
        var iframe2=document.getElementById('iframe2');
        iframe2.onload=function(){//父页面调用子页面中的方法
            iframe2.contentWindow.b();
        };
        function test2() {
            console.log("我是父页面中的方法,在子页面中调用的");
            return iframe2;
        }
        </script>
        </body>
    </html>

    子页面iframe2.html:

    <!DOCTYPE html>
    <html lang="en">
        <head>
            <meta charset="utf-8">
            <title>子页面</title>
        </head>
        <body>
        <div id="test">aaa</div>
        <div class="iframe2">子页面</div>
        <script type="text/javascript">
        //子页面iframe2.html调用父页面iframe1.html的函数:
         parent.test2();
          function b(){
               console.log("我是子页面iframe2");
           }
           function c() {
               console.log("iframe3页面调用iframe2页面");
           }
        </script>
        </body>
    </html>

    子页面iframe3.html:

    <!DOCTYPE html>
    <html lang="en">
        <head>
            <meta charset="utf-8">
            <title>iframe3</title>
        </head>
        <body>
        <script type="text/javascript">
        var iframe2=parent.test2();
        iframe2.contentWindow.c();//iframe3调用iframe2中的方法
        </script>
        </body>
    </html>

    Demo2也实现了子页面与子页面之间相互调用。

  • 相关阅读:
    iOS 静态、全局变量、常量
    原子性atomic/nonatomic
    iOS数组遍历
    iOS开发过程中易犯的小错误
    mac开启Airdrop的硬件要求
    Activity Monitor 闪退 & 无法进入睡眠
    在Linux中连接android设备
    网格布局(GridLayout) 行数与列数
    $符号报not defing 报错
    eclipse鼠标变成十字符号
  • 原文地址:https://www.cnblogs.com/huangshikun/p/6731537.html
Copyright © 2020-2023  润新知