vue中内嵌iframe的src更新页面未刷新问题

vue中,系统使用iframe内嵌了其他系统的页面,iframesrc修改了,但是iframe内部页面内容未更新,也未请求接口。

原因:iframe的src中如果带hash #src改变是不会刷新的。
解决:方式一:可以在 # 号前加一个随机数或者时间戳,但这种方式会改变url;方式二:在组件上加key,强制刷新页面。
方式一:

this.url= `https://xxxx/xxxxx${new Date().getTime()}/#/${val.params.url}`

方式二:

<template>
  <div>
    <iframe
      :key="key"
      :src="url"
      width="100%"
      height="100%"
      frameborder="0"
    ></iframe>
  </div>
</template>

<script>
export default {
  data() {
    return {
      url: "",
      key: new Date().getTime()
    }
  },
  watch: {
    $route: {
      handler(val) {
        this.key = new Date().getTime()
        this.url= `https://xxx/xxx/#/${val.params.url}`
      },
      immediate: true,
    },
  },
}
</script>
  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答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
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值