笔记:vue中iframe刷新后src丢失出现404问题

55 篇文章 4 订阅
35 篇文章 1 订阅

 如果组件中,用iframe嵌套了别的项目地址;刚开始用vuex保存src内容,但是页面刷新后,iframe中的内容404;原因是vuex中的src没有值,所以采用浏览器缓存实现;

代码如下

<template>
  <div class="sc-demo">
    <iframe class="iframe" :src="src" ></iframe>
  </div>
</template>
<script>
import { mapGetters, mapActions } from 'vuex'
export default {
  components: {},
  data () {
    return {
      src: ''
    }
  },
  name: 'demo',
  props: {},
  computed: {},
  methods: {
    ...mapActions({
      action_activeMenu: 'action_activeMenu'
    })
  },
  created () {
    // 解决路由刷新后找不到src,无法访问网页问题
    // 第一次进入该菜单
    if (!localStorage.getItem('iframeSrc')) {
      window.localStorage.setItem('iframeSrc', this.$route.params.src) // 存储
      this.src = this.$route.params.src
    } else {
      // 如果刷新本页面
      if (!this.$route.params.src) {
        this.src = localStorage.getItem('iframeSrc') // 读取
      } else {
        // 如果点击其他菜单
        this.src = this.$route.params.src
        window.localStorage.setItem('iframeSrc', this.$route.params.src)
      }
    }
  },
  mounted () {},
  watch: {}
}
</script>

### 回答1: 在Vue,如果iframesrc属性重复刷新,可能是因为Vue的数据绑定机制导致的。当数据发生变化时,Vue会自动重新渲染组件,如果iframesrc属性绑定了一个动态的数据,每次数据变化时都会导致iframe重新加载。解决方法可以使用v-if指令来控制iframe的显示和隐藏,或者使用key属性来强制组件重新渲染。 ### 回答2: 在Vue使用iframe元素时,如果iframesrc属性重复刷新,可能会遇到一些问题。这个问题通常出现在开发人员使用Vue.js框架在应用程序不断更改组件,或者在动态加载组件时。经过分析,可以得出这是因为iframe无法保存其状态,因此每次刷新它都会加载完整的网页。 为了解决这个问题,有几种方法可以尝试。首先,可以考虑使用Vue的keep-alive组件来缓存已经加载的组件,避免重复刷新。在使用keep-alive时,需要确保在组件的任何逻辑不会对iframesrc属性进行任何更改。此外,还可以使用Vue的v-show指令来显示或隐藏iframe元素,而不是动态更改src属性。 另外,也可以考虑使用Vue的watcher机制来监视src属性的更改,并在必要时进行调整。具体来说,可以在Vue组件对象定义一个watcher,以便在发现src属性更改时执行适当的逻辑。例如,如果src属性一直重复刷新,则可以在watcher设置一个标志来指示iframe是否已经加载,以便避免重复加载。 最后,如果上述方法都无法解决问题,则可能需要使用Vue的异步组件功能。异步加载组件可以避免在每次更改时重新加载整个组件,从而提高性能并将iframe刷新次数降至最低。 综上所述,iframesrc重复刷新是一个常见的Vue.js应用程序问题。为了解决这个问题,开发人员可以考虑使用Vue的keep-alive,v-show或watcher机制,或者使用异步组件来优化应用程序并减少iframe刷新次数。 ### 回答3: vueiframesrc重复刷新是指在不更改iframesrc属性时,对iframe进行多次重载或刷新操作。这种现象通常出现在需要通过iframe嵌入外部网页或应用程序的情况下。 造成这种问题的主要原因是由于vue的强制刷新机制。在vue,当组件状态发生变化或数据更新时,vue会根据v-for、v-if、v-show等指令重新渲染组件,并将新的DOM插入到页面。针对iframe的嵌入,这会使iframesrc属性重新加载,从而导致重复刷新。 为了解决这个问题,可以使用vuevue-iframe插件来代替原生的iframe标签进行嵌入。vue-iframe插件采用的是vue的数据渲染方式,将iframe当作一个子组件进行管理。这样,即使在重新渲染组件时,也不会影响到iframesrc属性,避免了重复刷新。 另一种解决方案是通过监听iframe的load事件来控制iframe刷新。在iframe设置监听事件,在事件动态更改iframesrc属性来达到刷新的目的。只有当需要刷新页面时才触发iframe的load事件,这样就可以避免多次重复刷新问题。 总之,在vue使用iframe标签进行嵌入时,需要注意原生iframe标签的刷新特性,同时可以采用vue-iframe插件、监听iframe的load事件等方式来避免重复刷新问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨大大28

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值