当前位置: 首页 > article >正文

前端js,vue系统使用iframe嵌入第三方系统的父子系统的通信

前端js,vue系统使用iframe嵌入第三方系统的父子系统的通信
1,父子系统之间的通信问题
父系统给子系统传值可通过postMessage方式进行通信,postMessage(“传递的数据”,url)

1.1 父系统给子系统的传值

let iframe = document.getElementById('childFrame');
let o1 = {name:'zs',sex:'男'}
let o2 = JSON.stringify(o1);
iframe.contentWindow.postMessage(o2, 子系统url地址);

1.2 子系统获取系父统的传值

    window.addEventListener("message", (event)=>{  
      console.log("通过iframe的postMessage传参了--",event.data)
    },false); 

event.data就是传递过来的数据

1.3 子系统给父系统发送数据

 window.parent.postMessage('传递的数据', url);

1.4 获取子系统发送的数据

window.addEventListener('message',function(e){
                console.log("获取子页面传递的数据====",e)
                console.log(e.data)
               //处理自己的逻辑
            })

2,js页面添加鼠标监听等事件案例

2.1 嵌入的第三方系统案例代码如下:

  ["click", "mouseup", "mousemove", "keyup", "touchend"].forEach(item => {
      window.addEventListener(
        item,
        () => {
          this.debounceMove();
        },
        false
      );
    });
throttle是js的节流函数,请第三方系统使用自己的节流函数。
 methods: {
    debounceMove: throttle(function () {
      if(window.parent){
            window.parent.postMessage('传递的数据', 'url地址');
          }
    }, 1000),
  },

2.2 父系统获取第三方系统(子系统)的消息

let that = this;
            window.addEventListener('message',function(e){
                console.log("获取子页面传递的数据====",e)
                console.log(e.data)
                if(e.data == 'move'){
                    //结束倒计时
                     that.$bus.$emit('setCountDownTime',60);
                }
            })

2.3 节流函数的解释:
在某个时间内(比如500ms),某个函数只能被触发一次。

节流的应用场景
(1)监听页面的滚动事件;
(2)鼠标移动事件;
(3)用户频繁点击按钮操作;
(4)游戏中的一些设计;
总之,依然是密集的事件触发,但是这次密集事件触发的过程,不会等待最后一次才进行函数调用,而是会按照一定的频率进行调用;


http://www.kler.cn/news/353183.html

相关文章:

  • Linux系统基础-进程间通信(5)_模拟实现命名管道和共享内存
  • 2.1 > Shell 是什么、如何更熟练的使用 Bash Shell
  • 如何在 Debian VPS 上使用 mod_wsgi 和 Apache 运行 Django,并使用 virtualenv Python 环境
  • 报表工具怎么选?山海鲸VS帆软,哪个更适合你?
  • S32DS for ARM GPIO实践
  • docker容器无法连接宿主机mysql排查
  • 如何在UE5中创建加载屏幕(开场动画)?
  • mac上docker desktop 服务指南
  • 【C++刷题】力扣-#163-缺失的区间
  • 拟声 0.37.0 | 拟物风格,超级优美,功能丰富
  • 机器学习——解释性AI
  • java脚手架系列4--测试用例、拦截器
  • AI 驱动的测试用例生成:实现全量覆盖
  • 移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——13.mapset(无习题)
  • 基于web的酒店客房管理系统【附源码】
  • 单元测试不加载主方法中application.yml配置文件的问题
  • 全星魅|多模卫星定位终端|智能手持终端|北斗定位手持机
  • 解决UNSPSC商品分类的层级不足的方法
  • 探索高效的 PDF 拆分工具及其独特功能
  • SpringBoot 整合 RabbitMQ 的使用
  • Ping32软件介绍,全面保护您的数据安全
  • 更新项目vue版本--入门篇
  • 2.5 Spring Boot整合Spring MVC框架
  • 英语写作中“认为是……”consider/view/regard/deem的用法
  • 使用Hugging Face中的BERT进行标题分类
  • 【NLP】GloVe模型