VUE项目中iframe缓存

1.业务需求

        在vue项目中某个页面,需要引入帆软报表,此时使用了iframe标签,成功引入了帆软报表并展示.

但是此时测试提出了新的问题,即当切换不同页面标签时,存在iframe标签的页面会刷新,iframe标签中的帆软报表里查询的数据也刷新了.

2.查询原因

        起初以为是缓存没有生效,但是除了iframe标签外,页面上的其他数据全部都在,所以keep-alive周期存在,只不过对iframe标签不生效.遂查阅相关资料,了解到keep-alive对iframe是不生效的,于是遍寻解决办法.

3.解决方法

        在APP.vue页面中,将钳有iframe标签的页面,作为组件引入,并写在keep-alive标签之外.

<template>
  <div id="app">
    <nav>
      <router-link to="/ifra">Iframe</router-link>
      <router-link to="/Iframe1">Iframe1</router-link>
      <router-link to="/index">Home</router-link>
    </nav>
      <keep-alive>
        <!-- Vue的路由 -->
        <router-view></router-view>
      </keep-alive>

      <!-- iframe页面 -->
      <Iframe v-show="$route.path == '/ifra'"></Iframe>
      <Iframe11 v-show="$route.path == '/Iframe1'"></Iframe1>
  </div>
</template>
<script>
import Iframe from './components/Iframe';
import Iframe1 from './views/Iframe1';
  export default{
    components: {
      Iframe,
      Iframe1
    },
    computed: {
    },
    mounted() {
    }
  }  
</script>

在路由页面,需要将引入的路由内容更改:

import Vue from 'vue'
import VueRouter from 'vue-router'
import HomeView from '../views/HomeView.vue'

Vue.use(VueRouter)

const routes = [
  {
    path: '/HomeView',
    name: 'HomeView',
    component: HomeView
  },
  {
    path: '/Iframe',
    name: 'Iframe',
    // component: () => import('../components/Iframe.vue')
  },
  {
    path: '/Iframe1',
    name: 'Iframe1',
    // component: () => import('../views/Iframe1.vue')
  },
]

注意,此时index.js中,需要将引入的component注释掉,才能生效.

4.总结

以上为查阅资料后,自己实现的,因为走了点弯路,所以自己总结一下记录出来,以记录.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值