位置: IT常识 - 正文

vue内嵌iframe跨域通信(vue页面嵌套iframe vue页面)

编辑:rootadmin
vue内嵌iframe跨域通信

推荐整理分享vue内嵌iframe跨域通信(vue页面嵌套iframe vue页面),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue iframe 跨域,vue页面嵌套iframe vue页面,vuex iframe,vue如何加跨域处理,vue页面嵌套iframe vue页面,vue使用iframe跳转别的页面,vue 嵌入iframe,vue页面嵌套iframe vue页面,内容如对您有帮助,希望把文章链接给更多的朋友!

1、Vue组件中如何引入iframe?

2、vue如何获取iframe对象以及iframe内的window对象?

3、vue如何向iframe内传送信息?

4、iframe内如何向外部vue发送信息?

一、Vue组件中如何引入iframe?

直接通过添加iframe标签,src属性绑定data中的src,第一步引入就完成了

<template> <div class="act-form"> <iframe :src="src"></iframe> </div></template><script>export default { data () { return { src: '你的src' } }}</script>vue内嵌iframe跨域通信(vue页面嵌套iframe vue页面)

二、vue如何获取iframe对象以及iframe内的window对象?

获取iframe的window对象,因为只有拿到这个对象才能向iframe中传值

<template> <div class="act-form"> <iframe :src="src" ref="iframe"></iframe> </div></template><script>export default { data () { return { src: '你的src' } }, mounted () { // 这里就拿到了iframe的对象 console.log(this.$refs.iframe) // 这里就拿到了iframe的window对象 console.log(this.$refs.iframe.contentWindow) }}</script>

三、vue如何向iframe内传送信息?

通过postMessage,具体关于postMessage是什么,自己去google,   我的理解postMessage是有点类似于UDP协议,就像短信,是异步的,你发信息过去,但是没有返回值的,只能内部处理完成以后再通过postMessage向外部发送一个消息,外部监听message   为了让postMessage像TCP,为了体验像同步的和实现多通信互不干扰,特别制定的message结构如下

{ cmd: '命令', params: { '键1': '值1', '键2': '值2' }}

 通过cmd来区别这条message的目的

具体代码如下

<template> <div class="act-form"> <iframe :src="src" ref="iframe"></iframe> <div @click="sendMessage">向iframe发送信息</div> </div></template><script>export default { data () { return { src: '你的src', iframeWin: {} } }, methods: { sendMessage () { // 外部vue向iframe内部传数据 this.iframeWin.postMessage({ cmd: 'getFormJson', params: {} }, '*') }, }, mounted () { // 在外部vue的window上添加postMessage的监听,并且绑定处理函数handleMessage window.addEventListener('message', this.handleMessage) this.iframeWin = this.$refs.iframe.contentWindow }, handleMessage (event) { // 根据上面制定的结构来解析iframe内部发回来的数据 const data = event.data switch (data.cmd) { case 'returnFormJson': // 业务逻辑 break case 'returnHeight': // 业务逻辑 break } }}</script>

四、iframe内如何向外部vue发送信息?

现在通过单击‘向iframe发送信息’这个按钮,从外部vue中已经向iframe中发送了一条信息

{ cmd: 'getFormJson', params: {}}

那么iframe内部如何处理这个信息?

<!DOCTYPE html><html lang="en"><head> <meta charset="utf-8"> <title>iframe Window</title> <style> body { background-color: #D53C2F; color: white; } </style></head><body> <h1>Hello there, i'm an iframe</h1> <script> // 向父vue页面发送信息 window.parent.postMessage({ cmd: 'returnHeight', params: { success: true, data: document.body.scrollHeight + 'px' } }, '*'); // 接受父页面发来的信息 window.addEventListener("message", function(event){ var data = event.data; switch (data.cmd) { case 'getFormJson': // 处理业务逻辑 break; } }); </script></body></html>

至此为止,内部的收发信息和外部的收发信息都已解决!

下面是完整代码:

<template> <div class="act-form"> <div class="nav"> <img src="https://www.yuucn.com/wp-content/uploads/2023/04/1682042997-37fa8c727f1f06d.png" @click="back()"> <div class="title">报名</div> </div> <div class="iframe-out"> <iframe :src="src" ref="iframe" @load="iframeLoad"></iframe> </div> <div v-if="isLoaded" class="send-form"><div class="send" @click="sendMessage()">提交</div></div> </div></template><!-- Add "scoped" attribute to limit CSS to this component only --><style lang="sass" rel="stylesheet/sass"> @import "style.scss";</style><script>import { Toast, Indicator } from 'mint-ui'import api from '@/utils/api'export default { data () { return { src: '', iframeWin: null, isLoaded: false } }, created () { let matchFamily = this.$store.state.matchFamily this.src = process.env.BASE_URL + '/matches/' + matchFamily.match.id + '/act/' + matchFamily.act.id + '/joinweb?token=' + this.$store.state.token }, mounted () { window.addEventListener('message', this.handleMessage) this.iframeWin = this.$refs.iframe.contentWindow // 开启加载动画 Indicator.open({ text: '努力加载中...', spinnerType: 'triple-bounce' }) }, methods: { back () { this.$router.push('/actIntro') }, sendMessage () { this.iframeWin.postMessage({ cmd: 'getFormJson', params: {} }, '*') }, iframeLoad () { // 关闭加载动画 Indicator.close() }, async handleMessage (event) { const data = event.data switch (data.cmd) { case 'returnFormJson': if (data.params.success) { // 调用报名方法 await this.enroll(data.params.data) } else { console.log('returnFormJson失败') console.log(data.params) } break case 'returnHeight': if (data.params.success) { this.$refs.iframe.height = data.params.data this.isLoaded = true } break } }, async enroll (data) { let matchFamily = this.$store.state.matchFamily let result = await api.enroll(matchFamily.match.id, matchFamily.act.id, data) if (result.success) { if (result.data.status === 'no_pay') { // 更新缓存 let resultMatch = await api.match(matchFamily.match.id, {}) if (resultMatch.success) { this.$store.commit('SET_CURRENT_MATCH', resultMatch.data) } Toast({ message: '报名成功', position: 'bottom' }) this.$router.push('/match/' + matchFamily.match.id + '/mdetail') } else { console.log('需要跳转到支付页面') } } } }}</script>
本文链接地址:https://www.jiuchutong.com/zhishi/297404.html 转载请保留说明!

上一篇:js查找数组中符合条件的元素(js查找数组所有符合条件数据)

下一篇:【蓝桥杯真题】当蓝桥杯开设Web组之后,对几题能拿省一?(蓝桥杯真题c语言)

  • iwatch7怎么看照片(applewatch怎么看全部照片)

    iwatch7怎么看照片(applewatch怎么看全部照片)

  • 拼多多红包助力上限(拼多多红包助力软件)

    拼多多红包助力上限(拼多多红包助力软件)

  • 苹果无线耳机不匹配(苹果无线耳机不见了一只怎么找回)

    苹果无线耳机不匹配(苹果无线耳机不见了一只怎么找回)

  • 手机号为什么不能注册qq(手机号为什么不能带0和5)

    手机号为什么不能注册qq(手机号为什么不能带0和5)

  • 语音控制无法下载文件(语音控制无法下载所需文件)

    语音控制无法下载文件(语音控制无法下载所需文件)

  • bn45是小米那款手机电池(小米bn44是什么型号的电池)

    bn45是小米那款手机电池(小米bn44是什么型号的电池)

  • 10.2寸ipad长宽多少厘米(ipad10.2英寸长宽多少)

    10.2寸ipad长宽多少厘米(ipad10.2英寸长宽多少)

  • e5相当于i几处理器(e5的处理器怎么样)

    e5相当于i几处理器(e5的处理器怎么样)

  • 红米k30变焦多少倍(红米k30变焦多少万像素)

    红米k30变焦多少倍(红米k30变焦多少万像素)

  • b站怎么注销手机号(b站怎么注销手机号绑定)

    b站怎么注销手机号(b站怎么注销手机号绑定)

  • 集线器是干什么用的(集线器是干什么用的,怎么用?)

    集线器是干什么用的(集线器是干什么用的,怎么用?)

  • 小米mde6s是啥型号(小米mde 6)

    小米mde6s是啥型号(小米mde 6)

  • ipadpro10.5支持pd快充吗(ipadpro10.5支持多少w快充)

    ipadpro10.5支持pd快充吗(ipadpro10.5支持多少w快充)

  • 苹果x充电一般多长时间(苹果x充电一般多久充满)

    苹果x充电一般多长时间(苹果x充电一般多久充满)

  • 新买的手机号码被别人注册微信怎么办(新买的手机号码支付宝被注册了怎么办)

    新买的手机号码被别人注册微信怎么办(新买的手机号码支付宝被注册了怎么办)

  • vivos1能不能控制空调(vivo手机能控制vivo手机吗)

    vivos1能不能控制空调(vivo手机能控制vivo手机吗)

  • 微信收款码可以重置吗(微信收款码可以查到个人信息吗)

    微信收款码可以重置吗(微信收款码可以查到个人信息吗)

  • 苹果xsmax是单卡还是双卡(苹果xsmax是几代)

    苹果xsmax是单卡还是双卡(苹果xsmax是几代)

  • pentium2是什么(pentium 1)

    pentium2是什么(pentium 1)

  • 播放器下载的视频怎么保存到本地(播放器下载的视频在手机哪个位置)

    播放器下载的视频怎么保存到本地(播放器下载的视频在手机哪个位置)

  • 手机 ud版什么意思(啥是ud版)

    手机 ud版什么意思(啥是ud版)

  • 苹果7p就是plus吗(苹果手机7p是7plus吗)

    苹果7p就是plus吗(苹果手机7p是7plus吗)

  • steam怎么改用户名(steam怎么改用户名和头像)

    steam怎么改用户名(steam怎么改用户名和头像)

  • 如何更改 Windows 11 上的默认浏览器(如何更改windows用户名)

    如何更改 Windows 11 上的默认浏览器(如何更改windows用户名)

  • yolov5优化器及超参数设置(yolov5网络优化)

    yolov5优化器及超参数设置(yolov5网络优化)

  • 增值税销项税额账务处理
  • 个人劳务报酬所得汇算清缴
  • 开票就必须要交个税吗
  • 销项发票能不能留抵
  • 税控盘锁死提示什么
  • 所得税季报中营业外收入填哪里
  • 企业所得税季度申报时间
  • 什么费用可以报销工会经费
  • 工资分配率的计算公式
  • 购买的车位是否有产权证
  • 政府奖励企业款银行未收到会计分录
  • 超过离线开票限定时长09d11f怎么解决
  • 企业年报资产状况信息可以不填吗
  • 新25项工资薪金是什么
  • 董事会费汇算清缴计入什么科目
  • 附加税减半征收计提和缴纳的会计分录
  • 孵化器虚拟地址多少钱一个啊
  • 房产税计税税率怎么算
  • 小规模核定征收税率
  • 会计低值易耗品有哪些
  • 其他税收收入包括
  • 诉讼费做账科目
  • 公司员工补充医疗保险方案
  • c盘垃圾太多需要重装系统嘛
  • 细说linux
  • 有一个设置
  • schedulerv2.exe - schedulerv2是什么进程 有什么用
  • 如何做世界上最小的遥控飞机
  • php通信协议
  • 新准则规定
  • 给员工期权和给股票的区别
  • 收入调节方式有哪三种
  • 印花税土地使用权计税依据
  • 建筑工程企业所得税预缴
  • 个税APP怎么填报扣税最少
  • 公司借调员工
  • 目前功能最强大的手机
  • 企业办理税务注销需要什么资料
  • 包装物押金销项税额的计算
  • 企业所得税包含员工工资吗
  • 税务查账后如何结转
  • 公司没有账套怎么做账
  • 车辆购置税多少个点?
  • 职工福利费计提标准
  • 期末余额和期初余额
  • 微信收入构成在哪
  • 09年前的固定资产
  • 出差补贴应该怎么入账
  • 工会经费交纳
  • Linux下安装mysql-5.6.12-linux-glibc2.5-x86_64.tar.gz
  • linux如何查询
  • windows8.
  • win8管理工具在哪里
  • ubuntu18.04单网卡多ip
  • ubuntu20.04怎么用
  • ubuntu tcp
  • windows端口占用怎么关闭
  • win7免费升win8
  • linux学啥
  • win7怎么设置u盘启动为第一启动项
  • win7无线网络显示x无法启用
  • js判断数组是否相等
  • jq复制元素
  • android ui绘制
  • cocos2dx视频教程
  • jquery的实现原理
  • cmd中文名称
  • Git 创建分支提交远程分支详解
  • unity3d c++开发
  • 基于unity3d
  • 用javascript
  • javascript for in
  • android8.0特性
  • 安卓权限管理app
  • 四川省地方税务局关于城镇土地使用税困难减免
  • 国家税务总局吕梁市税务局官网
  • 中国的消费税是怎么算的
  • 营销服务协议书范本
  • 生育登记网上服务大厅山东
  • 定期定额个体工商户需要做账吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设