zoukankan      html  css  js  c++  java
  • vue 中引入iframe,动态设置其src,遇到的一些小问题总结

    1.重置其样式,去掉外框以及滚动条等

    <iframe
            id="myIframe"
            ref="iframe_a"
            :src="mySrc"
            width="100%"
            height="100%"
            frameborder="no"
            border="0"
            marginwidth="0"
            marginheight="0"
            scrolling="no"
            allowtransparency="yes"
          />
    

    2.在mounted里也找不到iframe 的dom元素,于是用了很笨的办法去处理,希望路过的大佬可以指点一下,有好的办法教教我好吗??

    export default {
      data() {
        return {
          mySrc: '',
          loading: true, // 如果正在加载,就会盖住展示内容
          timer: null, // 第1个定时器
          timer1: null // 第2个定时器
        }
      },
      mounted() {
        if (this.$refs && this.$refs['iframe_a']) {
          this.setLoading(this.$refs['iframe_a'])
        } else {
          // console.log('延时加载第一次')
          clearTimeout(this.timer1)
          this.timer1 = setTimeout(() => {
            this.setLoading(this.$refs['iframe_a'])
          }, 500)
        }
      },
      destroyed() {
        this.timer = null
        this.timer1 = null
      },
      methods: {
        // 补坑函数1
        setLoading(iframeDom) {
          if (iframeDom) {
            // console.log('找到元素了,执行iframeDom.onload')
            const iframeD = document.getElementById('myIframeWebgl')
            iframeD.onload = () => {
              // console.log('加载完了-----------')
              this.loading = false
            }
            iframeD.src = this.setRoute()
          } else {
            this.setTim()
          }
        },
        // 补坑函数2
        setTim() {
          const iframeD = document.getElementById('myIframe')
          clearTimeout(this.timer)
          this.timer = setTimeout(() => {
            // console.log('延时加载第----次')
            this.setLoading(iframeD)
          }, 200);
        },
      }
    }
    

    3.在此之前,加载完成的onload事件有时候不会触发,点击页面有时候没有反应,地址改了但是页面没有变动,于是解决如下:

    问题在于: iframe的绑定地址的代码一定要放在onload下面,要不然就完了
    如果使用原生来写,大概这样子

    let myIframeDiv= document.querySelector('#myIframeDiv')
    let iframe = document.createElement('iframe')
    iframe.onload = () => {
    console.log('这样子就没问题了')
    }
    iframe.src = this.src // 就是这一行代码,一定要注意哦
    myIframeDiv.appendChild(iframe)
    
    
  • 相关阅读:
    Linux实战教学笔记16:磁盘原理
    Linux实战教学笔记15:用户管理初级(下)
    Linux实战教学笔记14:用户管理初级(上)
    Linux实战教学笔记13:定时任务补充
    Linux实战教学笔记12:linux三剑客之sed命令精讲
    Linux实战教学笔记11:linux定时任务
    Linux实战教学笔记10:正则表达式
    Linux实战教学笔记09:通配符
    Linux实战教学笔记08:Linux 文件的属性(下半部分)
    Linux实战教学笔记08:Linux 文件的属性(上半部分)
  • 原文地址:https://www.cnblogs.com/sugartang/p/14132895.html
Copyright © 2011-2022 走看看