位置: IT常识 - 正文

vue项目关于iframe嵌套的页面,在切换tab标签时会被重新刷新的问题处理方案(vue的iframe)

编辑:rootadmin
vue项目关于iframe嵌套的页面,在切换tab标签时会被重新刷新的问题处理方案 1.需求

推荐整理分享vue项目关于iframe嵌套的页面,在切换tab标签时会被重新刷新的问题处理方案(vue的iframe),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue中iframe如何传值,vue项目关于时间的js封装,vue frame,vuex iframe,vue iframe onload,vue的iframe,vue项目关于时间的js封装,vuex iframe,内容如对您有帮助,希望把文章链接给更多的朋友!

这两天工作中遇到一个这样的需求,切换tab标签时,要求对应的tab页面不刷新,但是项目中加入了一部分含有iframe的页面,在切换路由的过程中,如果使用keep-alive是达不到缓存ifram嵌套的页面效果的。

2.使用keep-alive缓存不了iframe界面的原因vue中的keep-alivevue项目关于iframe嵌套的页面,在切换tab标签时会被重新刷新的问题处理方案(vue的iframe)

1>.原理:vue 的缓存机制并不是直接存储 DOM 结构,而是将 DOM 节点抽象成了一个个 VNode节点。因此,Vue 的 keep-alive 缓存也是基于 VNode节点 而不是直接存储 DOM 节点。在需要渲染的时候从Vnode渲染到真实DOM上。

2>.参数:Keep-alive 组件提供了 include 和 exclude 两个属性,允许组件有条件的进行缓存。 include: 字符串或正则表达式。只有匹配的组件会被缓存。 exclude: 字符串或正则表达式。任何匹配的组件都不会被缓存。

3>.iframe中keep-alive机制失效原因:iframe页里的内容并不属于节点的信息,所以使用keep-alive依然会重新渲染iframe内的内容。而且iframe每一次渲染就相当于打开一个新的网页窗口,即使把节点保存下来,在渲染时iframe页还是刷新的。

3. vue中实现iframe内容缓存的思路保存iframe页里的节点信息我们很难去操作,这个时候我们就该想是否能在vue的route-view节点上动些手脚。我们可以在切换不含iframe的界面时使用vue路由,在切换含iframe页的界面时利用v-show来控制显示隐藏,使iframe的节点不被删除,以此来防止界面节点被重新更新,从而达到保存iframe节点数据的效果。4. 解决步骤:

综上所述,主要思路就是利用v-show去控制对应tab的iframe显示隐藏,使iframe的节点不被删除,以此来防止界面节点被重新更新,从而达到iframe页面的缓存效果。

iframe页面对应的路由配置:如下: { path: '', component: Layout, redirect: 'indexNew1', hidden: true, children: [ { path: 'indexNew1', component: (resolve) => require(['@/views/indexNew1'], resolve), meta: { title: ''} }, ] }, // 在这里需要找到Layout文件中对应的<router-view>

-根据上面的路由配置,找到了对应的layout组件中的router-view的引用,即appMain.vue页面

<template> <section class="app-main" :class="this.$route.path=='/tinyApp/tinyAppRate'?'app1':''"> <transition name="fade-transform" mode="out-in"> <keep-alive>// 这里加载的就是正常的vue页面 <router-view v-if="this.$route.path!=='/indexNew1'" /> </keep-alive> </transition> // 针对iframe嵌套的页面需要将封装的iframe组件引入,因为是多个嵌套的页面,所以这里需要循环生成 <iframe-index v-show="$route.query.id==item.id" v-for="item of tabSetList" :key="item.id" :newSrc="item.baseUrl" ></iframe-index> //这里的tabSetList数组就是你点击某菜单对应的此菜单信息的iframe相关属性 //因为tab有删除功能,所以不能用下标做key值 </section></template><script>// 引入iframe组件import iframeIndex from "@/views/indexNew1.vue";export default { name: 'AppMain', components:{ iframeIndex }, data(){ return{ tabList:[], tabSetList:[], } }, watch:{ $route(){ console.log('Rouer ------ ',this.$route) }, //这里是根据我项目的需求写的具体逻辑,不用参考 '$store.state.tagsView.sceneViews'(newVal){ this.tabList = [...newVal] this.tabSetList = this.tabList.filter((currentValue, currentIndex, selfArr) =>{ return selfArr.findIndex(x =>x.name === currentValue.name) === currentIndex });} },}</script>封装一个对应的iframe显示的组件// 这里只是放了部分代码 具体逻辑根据对应的需求添加即可<template> <div class="dashboard-editor-container"> <div style="width: 100%" class="itemflex-div"> <iframe :src="newSrc" class="iframemain" allowfullscreen="true" id="iframeId" ></iframe> </div> </div></template><script>export default { props:{ newSrc:{ type:String, default:'' } },};</script>综上所述,就是实现多iframe嵌套页面在切换tab时可以缓存对应页面的信息注意:因为tab一版包括删除功能,所以在循环iframe组件时对应的key值不能用数组下标,取一个唯一值即可,这里我取的是id
本文链接地址:https://www.jiuchutong.com/zhishi/283453.html 转载请保留说明!

上一篇:ImageDrive.exe进程什么文件 ImageDrive是什么进程(image driver)

下一篇:Win11 Beta 渠道首个预览版将在月底发布(windows11 beta渠道)

  • 个人股权转让如何纳税
  • 纳税人规模证明是什么
  • 物业收电费有问题找谁解决
  • 工业土地摊销年限最新规定
  • 黑盘报税流程视频教程
  • 如何使用发票对冲个人所得税
  • 财务利润率
  • 增值税申报错误如何重报
  • 同一个人可以在两个地方交社保吗
  • 工业企业成本会计核算的对象是什么
  • 财务软件怎样结转销售成本
  • 编制现金流量表的直接法和间接法
  • 支付单位结算卡年费计入什么科目
  • 在产品,半成品,产成品是什么意思
  • 施工企业项目部职责
  • 系统技术维护费计入什么科目
  • 标书费收据丢失怎么办
  • 差额征税科目
  • 应税行为扣除额怎么填
  • 原材料实际成本法核算问题
  • win10设置系统启动
  • 收到车辆保险发票怎么做分录
  • 缴纳上月增值税记账凭证怎么填写
  • 小规模纳税人如何缴纳企业所得税
  • php的api调用方法
  • 路由器密码忘了怎么查到
  • 商业一般纳税人辅导期截止时间
  • win10应用商店下载微信
  • php字符串变量
  • 研发专利什么意思
  • 公司外部人员的差旅费入什么科目
  • ci框架中新建的控制器取不到session
  • php正则表达式匹配,返回原因
  • 员工旅游费的税率是多少
  • vue路由实例
  • 关于简单的绘画
  • ps笔刷在哪里调
  • 坏账损失的核算属于会计估计
  • 损益类所得税费用
  • 生产企业成本会计做账流程
  • 代管资金支出怎么做账
  • 购进废旧物资进项税额
  • 国际货运代理企业不得从事的业务是
  • 会计做账可以写负数吗
  • 应税污染物的计算公式
  • 出口企业样品收入分录
  • 工会经费按什么比例返还
  • 发工资四舍五入多了几块钱怎么办
  • 应收账款的财务指标有哪些
  • 进口产品内销如何交税
  • 财务费用利息收入怎么记账
  • 营业收入包括哪几项收入
  • 财务费用中的利息费用指什么
  • 什么情况下投资乘数最大
  • 外来原始凭证丢了怎么办
  • 专业收账公司合法吗
  • Mac如何更换壁纸
  • hipo.dll是什么
  • ubuntu怎么设置成中文
  • linux系统中文输入法切换不出来
  • Win7系统打开文件夹没有自动排列选项
  • win7电脑磁盘突然不见了怎么办
  • 下载的mt4安装成了mt5
  • javascript基础教程教材答案
  • winrar指令
  • oculus dk2
  • js的a标签
  • 在Linux下用scp复制文件无需输入密码的技巧
  • android入门基础知识
  • unity2018.4破解
  • jquery悬浮弹出提示框
  • jquery获取动态生成的元素的值
  • jquery mobile app
  • 广东省深圳市税占27%,高新技术占15%,各市分别占多少?
  • 江西省电子税务局登录入口
  • 福建地方税务局招聘
  • 税务机关对核准类减免税的审核
  • 技术服务收入确认方法
  • 近亲房屋赠与免税费
  • 供给侧改革什么样的劳动力
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设