位置: 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语言)

  • 归属地号码可以改吗(归属地号码查询)(归属地号码可以变更吗)

    归属地号码可以改吗(归属地号码查询)(归属地号码可以变更吗)

  • oppofindx2pro有红外线遥控功能吗(oppo find x2pro有红外吗)

    oppofindx2pro有红外线遥控功能吗(oppo find x2pro有红外吗)

  • 小米9和小米10的对比(小米9和小米10的手机壳一样吗?)

    小米9和小米10的对比(小米9和小米10的手机壳一样吗?)

  • 苹果手机如何禁止拍照显示位置信息(苹果手机如何禁止删除app)

    苹果手机如何禁止拍照显示位置信息(苹果手机如何禁止删除app)

  • windows7系统如何给硬盘分区

    windows7系统如何给硬盘分区

  • 文档文本格式怎么弄(文档文本格式怎么设置)

    文档文本格式怎么弄(文档文本格式怎么设置)

  • 经常开热点会损坏手机吗(经常开热点会损耗流量吗)

    经常开热点会损坏手机吗(经常开热点会损耗流量吗)

  • p40pro出厂带膜吗(p40pro出厂有膜吗)

    p40pro出厂带膜吗(p40pro出厂有膜吗)

  • 苹果手机系统触感反馈是什么意思(苹果手机系统触感反馈怎么不能用了)

    苹果手机系统触感反馈是什么意思(苹果手机系统触感反馈怎么不能用了)

  • 个人抖音认证要钱吗(抖音个人认证要收费吗)

    个人抖音认证要钱吗(抖音个人认证要收费吗)

  • wps卡住了怎么强制退出(wps卡住了怎么强行退出)

    wps卡住了怎么强制退出(wps卡住了怎么强行退出)

  • 荣耀20s和荣耀9x跑分对比(荣耀20s和荣耀9X区别)

    荣耀20s和荣耀9x跑分对比(荣耀20s和荣耀9X区别)

  • 手机信号edge怎么解决(手机信号edge怎么回事)

    手机信号edge怎么解决(手机信号edge怎么回事)

  • 荣耀10负一屏在哪设置(荣耀10负一屏怎么打开)

    荣耀10负一屏在哪设置(荣耀10负一屏怎么打开)

  • 小米来电秀怎么设置(小米来电秀怎么设置自己的视频下载)

    小米来电秀怎么设置(小米来电秀怎么设置自己的视频下载)

  • 小爱离开手机可以用吗(小爱同学连接的手机不在身边还能用吗)

    小爱离开手机可以用吗(小爱同学连接的手机不在身边还能用吗)

  • 统计数据的预处理包括(统计数据的预处理)

    统计数据的预处理包括(统计数据的预处理)

  • 淘宝评价100字有积分吗(淘宝评价语100字复制通用(两篇))

    淘宝评价100字有积分吗(淘宝评价语100字复制通用(两篇))

  • 主动三分频要几台功放(主动三分频需要几个功放)

    主动三分频要几台功放(主动三分频需要几个功放)

  • 苹果7p和8p手机壳通用吗(苹果7p和8p手机壳)

    苹果7p和8p手机壳通用吗(苹果7p和8p手机壳)

  • beats录音师3怎么降噪

    beats录音师3怎么降噪

  • visual studio code怎么运行(visual studio code怎么运行html)

    visual studio code怎么运行(visual studio code怎么运行html)

  • 命令提示符乱码(命令提示符打错了怎么修改)

    命令提示符乱码(命令提示符打错了怎么修改)

  • js中Array构造器的处理方式(js array)

    js中Array构造器的处理方式(js array)

  • 在外地预缴的印花税如何扣除
  • 含税价怎么算不含税价
  • 注册税务师报名条件
  • 孳息和利息的区别
  • 安全生产费实际发生必须是付款吗还是挂帐也可以
  • 已执行新金融准则利润表如何填列
  • 无形资产摊销是当月还是下月
  • 包装物押金计入成本吗
  • 公司往来借款在现金流量表哪里填写
  • 有税控盘怎么领发票
  • 上月发票错误退回怎么做账
  • 研究开发费用资本化和费用化
  • 一人有限公司年度审计报告
  • 企业所得税前扣除是什么意思
  • 委托加工物资两种情况例题
  • 母公司派遣员工到子公司解散补偿金
  • 开完发票业务没收入需要确认收入入账吗?
  • 个人应纳税所得额 税率
  • 工会经费应该计入人工成本吗
  • 行政机关作出下列行为属于行政复议的范围
  • 按折现率计算现值
  • 成立分公司总公司有什么影响
  • 转让公司账本凭证都要移交吗
  • 创新券补贴可以算作高新收入吗?
  • 进项税额忘了抵扣
  • 购买公司付款会计分录
  • 旅游开发公司税率
  • 使用时间
  • 发票跨年作废很麻烦吗
  • PHP:oci_bind_by_name()的用法_Oracle函数
  • 运输发票符合什么要求
  • ctblocker
  • uniapp生成h5
  • 政府补助资金使用范围及管理方法
  • 车辆购置税征收对象
  • 公司收到投资款怎么写收据?
  • laravel phpstudy
  • 结转工资费用
  • 法院判定支付对方诉讼费,我可以入账吗
  • vue的简介
  • php array_merge_recursive 数组合并
  • windows where命令
  • php虚拟主机
  • 研发费用大于收入
  • 厂区道路不应该使用哪种材料
  • 党费返还怎么记账
  • 企业并购的主要特征是a扩大企业规模
  • 垃圾袋发票税收分类编码
  • 公司不按股权比例分红是否合法
  • 其他应付款不用付了会计分录
  • shell取命令执行结果
  • SQL设置外键
  • 差旅费包括哪些费用
  • 办理国有土地使用证
  • 建筑企业工程施工科目怎么结转
  • 预支款怎么做现金账
  • 跨国企业在国外设立工厂的战略地位
  • 学会整理内容
  • sql修改表的所属空间
  • ubuntu中怎么安装vscode
  • centos7怎么变成图形化界面
  • win7共享在哪
  • win10技巧 新功能
  • linux vi命令详解菜鸟教学
  • xp系统做完了进不去
  • win8文件夹选项在哪
  • win10小娜无法启动语音识别
  • cocoscreator lua
  • ubuntu nfs配置
  • jquery 插件写法
  • 初始学历是什么意思
  • unity yield
  • 浏览器检测js代码
  • javascript flash下fromCharCode和charCodeAt方法使用说明
  • 上海社保三方协议
  • 温州地方税务局
  • 国税局的标志
  • 长春市医保社保什么时候年检
  • 关于铁路安全的漫画
  • 餐饮业财务主管工作总结
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设