位置: 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渠道)

  • 荣耀手机如何恢复桌面天气和时间(荣耀手机如何恢复微信聊天记录)

    荣耀手机如何恢复桌面天气和时间(荣耀手机如何恢复微信聊天记录)

  • 苹果的圆点在哪设置(苹果的圆点在哪里找)

    苹果的圆点在哪设置(苹果的圆点在哪里找)

  • 微信聊天记录不小心删了还能恢复吗(微信聊天记录不见了)

    微信聊天记录不小心删了还能恢复吗(微信聊天记录不见了)

  • 花呗不能扫码支付,但淘宝能用(花呗不能扫码支付在哪更改)

    花呗不能扫码支付,但淘宝能用(花呗不能扫码支付在哪更改)

  • 三星s8恢复出厂设置后无法进入系统(三星s8恢复出厂设置后怎么使用)

    三星s8恢复出厂设置后无法进入系统(三星s8恢复出厂设置后怎么使用)

  • 联想7650粉盒通用型号(联想7650粉盒复位)

    联想7650粉盒通用型号(联想7650粉盒复位)

  • ipad word字符位置无效或位置有误(平板word字符位置无效或位置有误)

    ipad word字符位置无效或位置有误(平板word字符位置无效或位置有误)

  • 爱奇艺ipad不能横屏(爱奇艺ipad不能一起看视频吗)

    爱奇艺ipad不能横屏(爱奇艺ipad不能一起看视频吗)

  • 微信朋友圈怎么发两个视频(微信朋友圈怎么@一个人)

    微信朋友圈怎么发两个视频(微信朋友圈怎么@一个人)

  • 陌陌关注多久可以语音通话(陌陌关注多久可以发视频)

    陌陌关注多久可以语音通话(陌陌关注多久可以发视频)

  • iphone11新机有膜吗(苹果11新的有没有膜)

    iphone11新机有膜吗(苹果11新的有没有膜)

  • 快手口令怎么答题(如何把快手口令生成短链接)

    快手口令怎么答题(如何把快手口令生成短链接)

  • 华为Eyewear能连接苹果吗(华为eyewear支持苹果手机吗)

    华为Eyewear能连接苹果吗(华为eyewear支持苹果手机吗)

  • 三星手机滚动截图方法(三星手机滚动截屏怎么操作)

    三星手机滚动截图方法(三星手机滚动截屏怎么操作)

  • qq空间怎么关掉好友热播(qq空间怎么关掉此刻)

    qq空间怎么关掉好友热播(qq空间怎么关掉此刻)

  • 安卓vsco主动扣钱吗(安卓使用vsco)

    安卓vsco主动扣钱吗(安卓使用vsco)

  • 电脑怎么改照片dpi(电脑怎么改照片大小kb)

    电脑怎么改照片dpi(电脑怎么改照片大小kb)

  • 联想笔记本vt开启教程(联想笔记本vt开启不了)

    联想笔记本vt开启教程(联想笔记本vt开启不了)

  • 如何把电影下载到手机(如何把电影下载到电脑桌面上)

    如何把电影下载到手机(如何把电影下载到电脑桌面上)

  • 手机sn码代表什么意思(手机sn码是)

    手机sn码代表什么意思(手机sn码是)

  • 华为电子身份证可以取火车票吗(华为eid身份证)

    华为电子身份证可以取火车票吗(华为eid身份证)

  • 微信扫一扫在哪里找(微信扫一扫在哪里找到)

    微信扫一扫在哪里找(微信扫一扫在哪里找到)

  • 抖音直播可以pk吗(抖音直播可以pk几次啊)

    抖音直播可以pk吗(抖音直播可以pk几次啊)

  • 苹果手机怎么切换主号和副号(苹果手机怎么切换卡1卡2)

    苹果手机怎么切换主号和副号(苹果手机怎么切换卡1卡2)

  • 小米9关闭指纹亮屏(小米关闭指纹解锁震动)

    小米9关闭指纹亮屏(小米关闭指纹解锁震动)

  • Vue2 watch监听对象的属性值变化(vue的watch监听)

    Vue2 watch监听对象的属性值变化(vue的watch监听)

  • 公司更换营业执照需要多久
  • 维修费税率是13的话归口什么类别
  • 经营范围没广告怎么办
  • 餐饮服务需要缴纳增值税吗
  • 记账凭证银行利息该怎么记凭证
  • 入资款印花税怎么计算
  • 通过公账直接转账可以吗
  • 参加会议培训的好处
  • 临时人员劳务费有哪些?
  • 企业注销了,报表的银行存款还有余额
  • 汇算清缴调增的金额,如何做会计分录
  • 购买旧固定资产的增值税进项税
  • 个体工商户税收怎么算
  • 罚款收据与通用的区别
  • 税务变更需要哪些材料
  • 企业职工遣散费标准
  • 主营业务成本属于
  • 劳务外包要通过应付职工薪酬吗
  • 免费送试用装的话术
  • 面条适用的增值税率是
  • 委托贷款利息收入怎么开发票
  • 进料进口
  • 食堂充值管理制度
  • 赔偿款支出会计处理
  • 内部员工租房租金合法吗
  • 发票作废重扣税怎么办
  • 金融工具减值会影响什么
  • windows7使用方法
  • 微软即将终止当前系统版本
  • 若依框架搭建
  • 应付票据转让会计分录
  • 最贵的域名是什么名字
  • php常用设计模式(大总结)
  • 收到现金股利会影响利润吗
  • 小企业会计制度最新版
  • vue项目引入ts
  • uniapp和vue混合开发
  • 浅谈一下新冠的好处
  • php实现会话的步骤
  • 帝国最新版本
  • 项目折现率计算公式
  • 企业日常费用支出明细表
  • 发现以前年度损益调整怎么记账
  • 销售返利的账务处理购买方
  • 企业合并属于非企业吗
  • 核定征收企业所得税的小型微利企业不得享受优惠政策
  • 何谓应该是什么意思
  • mysql忘了密码
  • 个体工商户属于个人还是企业
  • 税款差0.05是怎么处理
  • 建筑租赁公司是什么意思
  • 个税手续费返还要交企业所得税吗
  • 退伍军人9000补助
  • 平行结转分步法各步骤的费用
  • 预收账款退款的会计处理
  • 进项税额转出分录怎么写,附加的原始凭证是什么
  • 企业取得的财政补贴是否缴纳增值税
  • 固定资产到期出售 合同
  • 专票金额和实际报销金额不符
  • 管理费用抵消分录
  • 企业的固定资产包括哪些内容
  • 一次性付清的优缺点
  • 汇算清缴后多交的企业所得税能退吗
  • 合作社盈余返还总额是指哪些数据
  • 什么是预收账款的正常余额
  • sql server Bulk Insert命令详细
  • 什么是分表分库
  • centos彻底删除文件命令
  • windows无法启动怎么解决
  • win10怎么用键盘重启
  • windows10version1909的10累积更新失败
  • mac红
  • unityshader怎么用
  • js date()
  • unity3d快捷键
  • vue.js 2.x
  • js对象用法
  • javascript:void(o)怎么解决
  • [Phonegap+Sencha Touch] 移动开发50 Android修改新建虚拟机存放的位置
  • 设备租赁增值税怎么抵扣
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设