• iframe兄弟间和iframe父子间的值传递问题


    在网上查了资料。iframe的参数传递问题。有很多答案都是不可行的。现在将收集的资料整理一下。已经验证通过。以下如有问题请及时指正。

    1. iframe兄弟之间值传递

       举例说明:index页面中有两个iframe:iframe1和iframe2,如下图:

      

     在iframe1中:有一个input输入框,一个变量f1,函数f1Func。

      

    // 获取iframe1,parent是index页面的window对象。
    var iframe1 = parent.frames["myframe1"];// 此时iframe1就是iframe1页面的window对象
    // 打印iframe1 中的变量
    console.log("iframe2 打印iframe1 中的变量", iframe1.f1);
    // 调用iframe1 中的函数
    console.log("iframe2 调用iframe1 中的函数");
    iframe1.f1Func();
    // 打印iframe1 中的DOM节点
    console.log("iframe2 打印iframe1 中DOM节点",iframe1.document.getElementById('frame1Input'));

     控制台打印如下:

     那么在iframe1中能不能用同样的方法打印出iframe2中的变量函数呢?可以一试

       结果控制台会报如下错误:

        原因是在index页面iframe1是在iframe2之前进行加载的。我们在iframe1中调用iframe2的东西。iframe2有可能还没有加载完成。那么我们需要等待iframe2加载完成:

       由上可知。iframe之间进行值传递。首先是要获取容器的window对象,在从容器出发寻找兄弟iframe。

    2. iframe父子之间值传递

        既然我们可以获取到容器的window对象。那么子iframe获取父元素的变量等也轻而易举。parent就是父元素的window对象。我们只需要parent.xxx进行调用即可。

       父元素有如何获取子ifarme的变量呢?如下:

      控制台打印

      函数和DOM元素同上。

      建议iframe兄弟间和iframe父子间都等到想要获取的iframe加载完成再进行操作。

      但是iframe相当于一个全新的页面。父页面中引入的css和js在iframe页面是不可以使用的。要重新加载,不建议使用iframe。

                                          -----------------------  原创文章如需转载请联系作者

  • 相关阅读:
    ubuntu下解决无法解析或打开软件包列表或状态文件的问题
    linux 解除文件root权限限制
    查看linux设备信息的命令
    R系安装rpm包
    重启窗口管理器
    内存泄漏如何定位?
    双屏显示,HDMI可以正常显示,lvds不显示
    避免linux下log在/var/log/messages 中重复输出的办法
    debian编包成功后,想要修改的文件的内容没有变化
    linux terminal 显示不全 将log内容打印出来
  • 原文地址:https://www.cnblogs.com/w-sansamilly/p/7595481.html
Copyright © 2020-2023  润新知