当前位置:首页 > 技术文章 > 正文内容

VUE 项目中使用iframe及传值(vue嵌入iframe引起循环)

zonemu3个月前 (07-25)技术文章38

最近做了一个这样的业务处理,在uniapp 项目中使用第三方页面,需要在当前的页面中把一些数据传给第三方,第三方处理后返回一些数据给当前页面,后续其他的操作会用到当前的数据。

当前页面-发送数据(iframe页面)

iframe 包括第三方地址把需要传递的数据拼接到url 地址

<iframe :src="`http://127.0.0.1/demo?${params}`" ref="iframe"></iframe>

处理参数,把参数字符串作为 URI 组件进行编码

const query = { param1:'xx',  param2:'ddd' }
const params = encodeURIComponent(JSON.stringify(query))

注册监听事件

mounted() {
   window.addEventListener('message', this.handleGetMessage)
},
methods: {
  handleMessage(event)  {
    if(event.data.status ==='ok') {
      console.log(event.data.params, '当前事件数据')
    }
  }
}

第三方地址(iframe子页面)

根据url 获得拼接的参数

const params = JSON.parse(decodeURIComponent(window.location.hash.split('?')[1]))

发送数据

 window.parent.postMessage({
          status: 'ok',
          params: { id:111 }
}, '*');

完整代码结构




这样就基本完成了iframe 父子页面之间的数据交互,上面只是个简单的示例,遇到了就写的记录下,具体业务开发的时候还是需要处理下,比如传递参数的时候可以把参数加密下,如果传递的参数比较敏感直接编码发送不好,常用的aes或者base64等,或者可以多层加密。


插个题外话阿: 有没有需要前端开发兼职的啊,最好vue方向的,只要东西全上手就是干!

相关文章

据说是可以替代 Windows 的 5个 Linux 发行版

现如今有数以千计的 Linux 发行版可供您使用,然而人们却无法选择一个完美的操作系统来替代 Windows。 使用 Windows 时,傻瓜都能操作自如,同样的方法却不适用于 Linux。在这里,您...

vue:组件中之间的传值(vue组件之间传参)

一、父子组件之间的传值----props/$emit1、父组件向子组件传值--props2.子组件想父组件传值-this.$emit('select',item)二、父组件向下(深层)...

解决GitLab报错:not allowed to force push code to a protected branch

当 force push 代码的时候,可能会遇到如下错误:You are not allowed to force push code to a protected branch on this pr...

我的VIM配置(如何配置vim编辑环境)

写一篇关于VIM配置的文章,记录下自己的VIM配置,力求简洁实用。VIM的配置保存在文件~/.vimrc中(Windows下是C:\Users\yourname \_vimrc)。VIM除了自身可配置...

02.Web大前端时代之:HTML5+CSS3入门系列~H5结构元素

Web大前端时代之:HTML5+CSS3入门系列:http://www.cnblogs.com/dunitian/p/5121725.html1.结构元素 可以理解为语义话标记,比如:以前这么写<...

Web前端全套教程+视频包含JavaScript、Vue等

写在前面:web前端从入门到精通经典教程,老师精心讲,想从事编程或者数据分析行业的小伙伴点进来,只需你评论并关注私信留言“前端”。便可免费获取。WEB前端简介:WEB前端工程师,也叫Web前端开发工程...