有同鞋说上次那个iframe的说明不是很完善,所以这次来补充一下,这次我就用vue写了,简单一些,不然写个事件那些都让我头大
环境
vite - vue2全家桶
为什么使用vite?就是vite多页面开发方便🥲
我准备了两个other文件,还有路由,这些页面都是使用的src下面的代码,就是为了区分一下url,看加载情况
Test.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>iframe测试</title>
<style>
*{
margin: 0;
padding: 0;
}
iframe{
border: 1px red solid;
height: 600px;
width: 1080px;
}
</style>
<link href="./public/vue2.6.14/elementUI2.15.8/index.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="app">
<div>
<el-button @click="btnClick">切换</el-button>
</div>
<iframe :src="src" frameborder="0"
@load="iframeLoad"
></iframe>
</div>
<script src="./public/vue2.6.14/vue.min.js"></script><!--引入一个vue方便些-->
<script src="./public/vue2.6.14/elementUI2.15.8/index.js"></script>
<script>
const vm = new Vue({
el: '#app',
data(){
return {
src: 'http://localhost:81/',
count: 1
}
},
methods:{
btnClick(){
switch (this.count){
case 1:
this.count = 2
this.src = 'http://localhost:81/other/index.html'
break;
case 2:
this.count = 3
this.src = 'http://localhost:81/other/other.html'
break;
case 3:
this.count = 4
this.src = 'http://localhost:81/other/other.html#/dynamicTable'
break;
case 4:
this.count = 5
this.src = 'http://localhost:81/other/other.html#/selectObject'
break;
case 5:
this.count = 1
this.src = 'http://localhost:81/'
break;
}
},
iframeLoad(){
console.log('加载完成',this.src)
}
}
})
</script>
</body>
</html>
我这里一共放了url。一个基础的,两个hash,两个url,然后点击切换按钮进行循环切换
第一次切换
页面是重新加载了的
第二次切换
iframe又重新加载了一次
第三次切换
接下来切换就是切换hash,可以看看是否会重新加载
iframe的onload并没有触发
第四次切换
也没有触发
第五次切换
切回初始的url,触发了onLoad方法
结果
五次切换走过以后,url的变换iframe的onload就会重新触发,但是修改hash就不会重新触发
大家可以自行去查看项目地址
最后
欢迎关注公众号致心空间:O(∩_∩)O😁