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

  • 微信换手机了聊天记录能找回来吗(微信换手机了聊天怎么办)

    微信换手机了聊天记录能找回来吗(微信换手机了聊天怎么办)

  • tv档是什么模式

    tv档是什么模式

  • 华为nova7白色虚拟按键如何取消(华为nova7se变成白屏了怎样调)

    华为nova7白色虚拟按键如何取消(华为nova7se变成白屏了怎样调)

  • iphone怎么录制屏幕视频有声音(苹果想怎么录制屏幕)

    iphone怎么录制屏幕视频有声音(苹果想怎么录制屏幕)

  • 笔记本第一次开机注意事项(笔记本第一次开机怎么跳过Microsoft登录)

    笔记本第一次开机注意事项(笔记本第一次开机怎么跳过Microsoft登录)

  • ipad6代多少寸	(ipad6代是几寸)

    ipad6代多少寸 (ipad6代是几寸)

  • 令牌环网中某个站点能发送帧是因为(令牌环网中某个站点能发送信息是因为)

    令牌环网中某个站点能发送帧是因为(令牌环网中某个站点能发送信息是因为)

  • 什么是u-key(什么是ukey版网上银行)

    什么是u-key(什么是ukey版网上银行)

  • 利用光学原理存储数据的是(利用光学原理存储数据的是A内存储器B光盘C硬盘D软盘)

    利用光学原理存储数据的是(利用光学原理存储数据的是A内存储器B光盘C硬盘D软盘)

  • 微信出现风险提示怎么快速解决(微信出现风险提示)

    微信出现风险提示怎么快速解决(微信出现风险提示)

  • 华为dc调光怎么设置(华为电致调光)

    华为dc调光怎么设置(华为电致调光)

  • mp2g2ch/a是ipad几代(ipad mp2g2ch/a是什么)

    mp2g2ch/a是ipad几代(ipad mp2g2ch/a是什么)

  • 媒体音量和铃声音量有什么区别(媒体音量和铃声音量)

    媒体音量和铃声音量有什么区别(媒体音量和铃声音量)

  • 数据线分不分快充慢充(数据线分不分快充线)

    数据线分不分快充慢充(数据线分不分快充线)

  • 抖音私信已读是什么意思(抖音私信已读是对方点开视频了吗)

    抖音私信已读是什么意思(抖音私信已读是对方点开视频了吗)

  • m6能插内存卡跟电话卡吗(m6插卡版的能插内存卡吗)

    m6能插内存卡跟电话卡吗(m6插卡版的能插内存卡吗)

  • 怎么在word新建文档(怎么在word新建一个文件夹)

    怎么在word新建文档(怎么在word新建一个文件夹)

  • 微信传图识字收费吗(微信中传图识字怎么用)

    微信传图识字收费吗(微信中传图识字怎么用)

  • 什么是设计水线长(设计线是什么意思)

    什么是设计水线长(设计线是什么意思)

  • 闲鱼怎么隐藏交易评价(闲鱼怎么隐藏交易价格)

    闲鱼怎么隐藏交易评价(闲鱼怎么隐藏交易价格)

  • 蓝牙耳机l是哪个耳朵(蓝牙耳机上的l和r)

    蓝牙耳机l是哪个耳朵(蓝牙耳机上的l和r)

  • arp的协议号是多少(arp协议的中文名称)

    arp的协议号是多少(arp协议的中文名称)

  • 魅族怎么锁定桌面布局(魅族怎么锁定桌面软件)

    魅族怎么锁定桌面布局(魅族怎么锁定桌面软件)

  • 轻颜相机如何设置连拍(轻颜相机如何设置参数)

    轻颜相机如何设置连拍(轻颜相机如何设置参数)

  • 嵌入式软件产品的增值税即征即退具体实例
  • 快递收派服务增值税政策
  • 税盘没有及时清卡
  • 净营业周期和营业周期
  • 红字发票开错了已上传如何作废
  • 资产负债表本期盈余为什么是负数
  • 支出和成本的关系和区别
  • 进口增值税可以抵税吗
  • 企业比赛奖品买什么好
  • 现金存款账户
  • 库存商品盘盈盘亏表
  • 机械设备增值税税率
  • 增值税专用发票几个点
  • 应交税金增值税明细账怎么登记
  • 股权转让收到钱会计分录
  • 资本公积金转增资本属于所有者权益吗
  • 出租车车票能进高铁站吗
  • 企业收到农产品普通发票
  • 100%控股有什么风险
  • 公司给部分员工交公积金
  • 软件开发公司账务怎么做
  • win10应用商店下载的软件在哪
  • 商场充值卡发票在哪开
  • 上一年度的费用入账需要分摊吗
  • 外购货物用于不动产在建工程
  • 限定性净资产要算在现金流量表里吗
  • 转出未交增值税会计科目
  • win10右键失灵解决办法
  • 财政预算单位可以既是省级又是中央
  • 应付票据抵付应付账款会计分录
  • php中的异常和错误怎么写
  • php中数据库怎么设计
  • html表单合并行
  • 增值税的纳税时间是多久
  • RocketMQ-02
  • update-initramfs -u命令
  • 资产计税基础填资产原值吗
  • 织梦使用手册
  • 织梦怎么建站
  • mongodb数据类型有哪些
  • 一般纳税人增值税税率
  • 出口退税在贷方,之后还交税吗
  • SQL Server实现split函数分割字符串功能及用法示例
  • 打开access自动弹出窗体
  • 代数分配法的优缺点和适用范围
  • 小规模纳税人代账费用
  • 非货币性资产交换换入资产的入账价值
  • 汇算清缴预缴
  • 管理费用月底结转吗
  • 核销报验登记流程
  • 个税租房抵扣细则
  • 本期缴纳上期应纳税额怎么算
  • 从会计角度看会计刺客
  • 投资款计入哪个科目
  • 单位委托单位
  • 关于数据库的叙述
  • win8怎么禁止开机启动项
  • win10预览版21301bug
  • ubuntu16设置启动项
  • linux获取进程启动时间
  • centos5安装步骤
  • mac dock栏不见了
  • ubuntu x
  • centos ftp上传文件
  • qcwlicon.exe - qcwlicon是什么进程 有何作用
  • 苹果电脑bim
  • centos为什么没有桌面
  • linux内存耗尽怎么解决
  • 屏蔽触摸按键什么意思
  • 创建react native项目
  • z-blog SyntaxHighlighter 长代码无法换行解决办法(基于jquery)
  • wifi显示开发状态
  • ie11滚动条样式
  • 简述javascript
  • javascript函数的定义
  • bootstrap轮播效果
  • 四川国税局普通发票查询?
  • 发票代码如何查真伪
  • 新余契税
  • 原始股卖出多少需要披露
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设