iframe父子页面通讯

由于公司的service后台,是前端搭的架子,里面各个tab菜单栏都是不同的工程,通过iframe来嵌套,在业务越来越复杂的情况下,总是避免不了iframe之间的通讯,

下面是两种iframe之间的通讯:

1、父子iframe通过监听来实现

在iframe的子页面里使用postMessage向父级页面传参:

window.parent.postMessage({type: "closeIbooking", fromSource: "turnoffIbooking"}, "*");

在父级页面里监听message,在监听到相应的信息之后就可以执行所要执行的函数了,这样就可以子组件向父组件通信啦:

// 监听ibooking传来的message
window.addEventListener("message", (e)=> {
    let {type, fromSource} = e.data;
    let newIframeInfo = {
        ibookingURL: "",
        ibookingVisible: false,
        relation: ‘‘,
        ProductNo: ‘‘,
    };
    if(type === "closeIbooking") {
        switch (fromSource) {
            case "productRecommend":
                addTag();  // 在收到这个message的时候要触发的函数
            case "orderList":
            case "turnoffIbooking":
            default:
                window.store.dispatch(update(‘customMenu‘, "ibookingController", newIframeInfo));
        }
    }
});

2、除此之外还可以直接调用彼此的方法及变量:
  

    1、子页面调用父页面方法
  //调用父页面方法
  window.parent.func(); //调用方法
  2、父页面调用子页面方法
  //调用子页面方法
  window.frames[iframe序号].func(); //调用方法

原文地址:https://www.cnblogs.com/katydids/p/11761408.html

时间: 2024-10-09 01:11:14

iframe父子页面通讯的相关文章

iframe父子页面操作-比较好用的两个方法-window.parent/oframe.contentWindow.document

发现比较好用的iframe父子页面操作方法,记录一下 1.父页面 test.html <iframe id="iframe1" src="iframe.html"></iframe> 获取iframe    var oframe = document.getElementById("main") 获取子页面  var child =  oframe.contentWindow.document 获取子页面元素      v

iframe父子页面通信

一.同域下父子页面的通信 1.父页面调用子iframe页面 (1)通过iframe的Id获取子页面的dom,然后通过内置属性contentWindow取得子窗口的window对象,此方法兼容各个浏览器 document.getElementById('iframe_Id').contentWindow // contentWindow 不能省略 (2)通过iframe的name直接获取子窗口的window对象 iframe_Name.window    //window可以省略 (3)通过win

iframe父子页面之间相互调用元素和函数

1 <!doctype html> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 5 <meta name="Keywords" content=""> 6 <meta name="Description" con

基于iframe父子页面传值的方法。

之前项目中用layer.js作为弹窗的框架,发现layer.js中大部分弹窗都是通过iframe模拟的.为此,在项目中遇到了不少坑.印象最深的就是父子页面传值的问题.后面经过一段时间的研究.总结出以下几种方法: 一.在子页面的js中直接使用parent获取父级页面中的对象方法.如: $(document).ready(function(){ $("#people_add_cardActiveTime").text(laydate.now(0, 'YYYY-MM-DD 00:00:00'

iframe父子页面交互

以下的父页面与子页面交互的方法必须起一个页面服务才能使用(通过域名来访问)并且的保证父页面与子页面是在同一域名下,不然是会报错的 父页面调用子页面 获取父页面的ifram的id或calss之后可以通过contentWindow这个对象获取子页面的元素和方法.父页面调用子页面的元素和方法时,必须要等iframe加载完毕,或者在onload 方法里执行,不然是获取不到的! contentWindow 可取得子窗口的 window 对象. document.getElementById('main')

iframe 父子页面方法调用

在写代码的时候经常会用到将一个网页嵌入到另一个网页中,w3c也规定了一个标签<iframe>,这个标签本身就支持跨域,而且所有的浏览器都支持 iframe具有以下属性: 1.frameborder 设为1代表显示周围边框,设置为0不显示周围边框 2.height 设置iframe的高度 3.width 设置iframe的宽度 4.longdesc 属性值为URL 规定一个页面,该页面包含了有关 iframe 的较长描述 5.marginheight 定义 iframe 的顶部和底部的边距 6.

iframe 父子页面取值

使用jquery操作iframe 1. 内容里有两个ifame <iframe id="leftiframe"...</iframe> <iframe id="mainiframe..</iframe>leftiframe中jQuery改变mainiframe的src代码: $("#mainframe",parent.document.body).attr("src","http://www

JS iframe父子页面元素调用方法 window parent top 解释

父窗口调用子窗口 var hasMore = parent.document.getElementByIdx_x_x_x("hasMore").value;子窗口调用父窗口document.frames["ifrmBoxFrame"].me.preLoadBoxGrid(); window.frames["iframe_ID"].document.getElementByIdx_x_x_x("iframe_document_object

IFrame父页面和子页面的交互

现在在页面里面用到iframe的情况越来越少了,但有时还是避免不了,甚至这些页面之间还需要用js来做交互,那么这些页面如何操作彼此的dom呢?下面将会逐步介绍. 1.父页面操作子页面里面的dom 下面提供了四中方法来操作iframe里面的dom: a. contentWindow: 以window对象返回iframe中的文档,所有主流浏览器都支持. 用法: // 获取id为iframeId的子页面中的div01元素 document.getElementById('iframeId').cont