iframe的src修改可以不刷新页面补充

551 阅读1分钟

image.png

有同鞋说上次那个iframe的说明不是很完善,所以这次来补充一下,这次我就用vue写了,简单一些,不然写个事件那些都让我头大

环境

vite - vue2全家桶

为什么使用vite?就是vite多页面开发方便🥲

image.png

我准备了两个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,然后点击切换按钮进行循环切换

image.png

第一次切换

image.png

image.png

页面是重新加载了的

第二次切换

image.png

iframe又重新加载了一次

第三次切换

接下来切换就是切换hash,可以看看是否会重新加载

image.png

iframe的onload并没有触发

第四次切换

image.png

也没有触发

第五次切换

image.png

切回初始的url,触发了onLoad方法

结果

五次切换走过以后,url的变换iframe的onload就会重新触发,但是修改hash就不会重新触发

大家可以自行去查看项目地址

最后

欢迎关注公众号致心空间:O(∩_∩)O😁

致心空间