Vue iframe更改src后页面未刷新问题解决方法
作者:NoSilverBullet 发布时间:2024-05-09 15:14:15
标签:Vue,iframe,src后,页面,未刷新
一、场景描述
在项目开发过程中,应用iframe
实现外系统页面嵌套的时候,发现引入其他页面后,页面内容并未刷新加载,经过一番研究,解决方案如下:
vm.iframeSrc = iframeSRC
if (document.getElementById('iframe')) {
setTimeout(() => {
document.getElementById(iframeid).contentWindow.location.reload(true);
}, 200)
}
注:务必在更改iframe src
属性值之后补充页面重载逻辑,否则无法解决问题。
注:window.reload是重新加载当前需要的所有内容,也就包括页面和后台的代码,此过程中实际上是从后台重新进行操作;
二、高版本浏览器页签切换后内容不刷新问题解决
在应用上面的解决措施后,发现Chrome(>75)
及IE高版本浏览器下,iframe
在更改了src
之后对应的网页并未刷新问题复现。
2.1 解决思路
iframe
下页面内容未刷新问题其实是由于页面未重新渲染导致的,但是通过在src
中添加时间戳以达到欺骗浏览器重新渲染的目的并未解决以上问题,后通过v-if
实现销毁新建iframe
方式,完美解决问题。
2.2 解决措施
<iframe v-if="flagsArr[index]" :src='...+timeStamp'></iframe>
handleSelect (tab, event) {
this.index = tab.index
this.flagsArr = Array(页签数组.length).fill(false)
this.flagsArr[this.index] = true
vm.iframeSrc = iframeSRC
if (document.getElementById('iframe')) {
setTimeout(() => {
document.getElementById(iframeid).contentWindow.location.reload(true);
}, 200)
}
}
三、拓展阅读
3.1 keep-alive 缓存 iframe
因为iframe
不在vue
的虚拟节点里,所以即使使用了vue
的keep-alive
也不会缓存iframe
页面。
我们可以换个思路解决这个问题。首先在router.js
里不要引入路径,就是component
不写,这样会出现加载这个路由,页面是空白,然后在app.vue
页面引入iframe
的组件,在<roter-view />
下面加载这个iframe
组件,通过v-show
判断$route.path === 'iframe的路由'
,如果是iframe
页面,iframe
页面就会正常加载出来,而且不管怎么跳转路由都会保存当前状态,也就相当于默认把iframe
页面加载出来,只是通过display:none
隐藏,如果到这个iframe
路由下了,再让其显示。
来源:https://juejin.cn/post/7225645078403088421


猜你喜欢
- 长话短说,今天介绍实现此功能的一个方法,需要了解的朋友可以参考下:一、JS 重载页面,本地刷新,返回上一页 代码如下:<a href=
- 背景MySQL在命令行输入密码时会提示mysql: [Warning] Using a password on the command li
- 前言:通过@语句调用一个函数去给另一个函数增加或修改一些功能的语法规则称之为Python装饰器。下面通过一个小案例来简单的理解什么是装饰器。
- Lightbox里面的一个函数,能把页面实际的高宽与浏览器可视面积的高宽保存在一个数组中..非常好用.什么是Lightbox?下载light
- 快速+简单搭建环境。如果有问题,欢迎进群讨论留言。第一步:安装python解释器官网地址:https://www.python.org/自动
- 每次使用python获取查询结果的时候,都会纠结一段时间到底用fetchone和fetchall,用不好容易报错,关键在于没有搞清楚它们之间
- insert into(列名) select 列名 from 表名 where 条件 --不创建表,只复制表数据 select 列名 int
- 基础知识使用框架的优点稳定性和可扩展性强可以降低开发难度,提高了开发效率Flask诞生于2010年,是Armin ronacher用Pyth
- 我们生活在信息繁杂的社会,尤其是在互联网时代,人们开始通过网络开始接触越来越多的信息,那么,如何获取/传递有效而准确的信息将非常重要。在网页
- Py2 时代,访问 MySQL 数据库的模块除了 PyMySQL 和 MySQL-python 之外,还有以速度见长的 Umysql,以及非
- 痛点引出在平时的开发当中,渲染侧边栏导航菜单有时会遇到过需要侧边栏有多层甚至无限层级的问题。此时更优雅的方式便是使用递归组件<el-m
- 有朋友问,在数据库中如何查询数据所在的行,一般我们建议一个自增字段就可以了.但是有时却会删除数据,那么那个自增字段也不正确了先不管朋友们为什
- 本文实例为大家分享了python实现图像降噪的具体代码,供大家参考,具体内容如下任务描述背景图像在数字化和传输等过程中会产生噪声,从而影响图
- 查看系统原有Python注:可以将python指向python3,但必须修改一些命令如yum的配置,不然会报错。安装依赖yum instal
- 相信每一个 javascript 学习者,都会去了解 JS 的各种基本数据类型,数组就是数据的组合,这是一个很基本也十分简单的概念,他的内容
- 问题概述:有时候在使用print函数输出时,往往需要不断地切换字符串和变量,操作起来很不方便,需要不断地打引号和逗号。比如:firstNam
- 当存在多个项目的时候,需要同时部署时,且只有一台服务器时,哪么就需要部署Mysql多个实例,原理很简单,多个mysql服务运行使用不同的配置
- Python追求简洁,诞生不少运算赋值规则,力求从简,其中就包括两个或者多个变量交换值。普通语言中# 声明变量a=50b=10# 开始交换,
- 这篇文章主要介绍了深入了解如何基于Python读写Kafka,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需
- <? //很好用的PHP数据库类,三、四句代码搞定一个表的操作,无论这个表字段有多复杂。 //此类多次大量用在大型网站程序的开发上,效