zoukankan      html  css  js  c++  java
  • 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。

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

  • 相关阅读:
    浏览器屏蔽百度搜索右侧热搜推荐脚本,收拾流氓头子
    js简单代码实现大banner轮播
    jquery回到顶部代码
    jquery实现隔行换色及移入移出效果
    利用:before和:after给段落添加效果的应用实例
    nginx配置文件应对网站攻击采集垃圾蜘蛛的方法总结
    Cygwin统计日志常用代码,欢迎各位大神补全
    原生js鼠标拖拽div左右滑动
    Day 82 VUE——基础
    Day 81 ES6
  • 原文地址:https://www.cnblogs.com/w-sansamilly/p/7595481.html
Copyright © 2011-2022 走看看