zoukankan      html  css  js  c++  java
  • iframe之间通信

    如题:网页嵌套一个iframe,这个iframe有自己的window对象,有自己的store,数据互不干扰,美滋滋;

    但也正因为数据互不干扰,通信就成了难题。

    今天记录下跨iframe调用的操作:

    1. 在window上注册方法,在子iframe中调用:

      父页面:window["messageStr"]=function(arg){console.log(arg)};

      子页面:window.parent.messageStr("from child");// 但记得try catch;

      特点:简单,嘻嘻

    2. 用postMessage方法

      父页面:

    window.addEventListener("message",(event)=>{
         console.log("event >>: ", event);
    });

      子页面:

    try {
        let win = window.parent;
        console.log("win>>: ", win);
        win.postMessage({data:1},“*”);
    } catch (error) {
        console.log("error >>: ", error);
    }

      特点:对于多层不同域名嵌套就不灵了,lz恰好遇见这种情况。

    3. 方法2的增强版:

      父页面写法不变;

      子页面加上域名:

            try {
                let win = window.parent;
                const origin = win.location.origin;
                win.postMessage({data:1},origin);
            } catch (error) {
                console.log("error >>: ", error);
            }

    over!

  • 相关阅读:
    Oracle Form Builder
    springboot post xml
    前台日期字符串 提交到后台 组装entity失败原因
    解析-dom编程
    解析-依赖注入DI
    vs 常用插件
    java 代码块 和 C#的代码块 对比
    ubuntu 常用命令
    ubuntu node
    使用 vs2015 搭建nodejs 开发环境
  • 原文地址:https://www.cnblogs.com/rainbowLover/p/14279130.html
Copyright © 2011-2022 走看看