iframe 详解-在vue中使用

Posted 越自律,越自由!!!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iframe 详解-在vue中使用相关的知识,希望对你有一定的参考价值。

上代码:定义,触发方式,可以通过按钮或加载来实现,根据实际需求来控制

<template>
    <div class="main-info">
        <iframe
         ref="iframe"
         id="iframe"
         frameborder="0"
         :src="iframeSrc"
        >
        </iframe>
    </div>
</template>
mounted () {
    const self = this
// 适配IE
    this.$nextTick(() => {
      const iframe = document.getElementById(\'iframe\')
      if (iframe.attachEvent) {
        iframe.attachEvent(\'onload\', function () {
          setTimeout(() => {
            self.clickIframe()
            self.handlePostMessageFail()
          }, 1000)
        })
      } else {
        iframe.onload = function () {
          setTimeout(() => {
 // 坑一,postMessage发送通知时,可能对方的页面还没有加载完成导致发送失败
            self.clickIframe()
            self.handlePostMessageFail()
          }, 1000)
        }
      }
    })
  },

 

 data () {
    return {
      iframeSrc: \'\',
      iframe: \'\',
      isReceiveMsg: false, // 是否收到消息
      actionNum: 5, // 最多执行5次
      timer: null,// 定时器
    }
  },

 

处理失败机制

  // postMessage消息发送失败机制,上面定义执行5次,第隔1.5秒,之前设置3次,间隔一秒,还是有失败的,所以这里采用这个,待完善
    handlePostMessageFail () {
      this.timer = setInterval(() => {
        if (this.jumpStatus !== \'2-1\' && !this.isReceiveMsg) {
          if (this.actionNum <= 0) {
            clearInterval(this.timer)
            this.timer = null
            this.isReceiveMsg = true
            return
          }
          this.clickIframe()
          this.actionNum--
        } else {
          clearInterval(this.timer)
          this.timer = null
          this.isReceiveMsg = true
        }
      }, 1500)

 

将来的自己,会感谢现在不放弃的自己!

以上是关于iframe 详解-在vue中使用的主要内容,如果未能解决你的问题,请参考以下文章

在vue中使用iframe标签

iframe嵌入高德地图出现崩溃

结合两个代码片段?将用户输入的 Youtube url 转换为嵌入 url,然后将 iframe src 替换为转换后的 url

使用Youtube API调用的iframe在Vue.js V-if命令后不会出现

在vue中使用Iframe嵌套问题

当 URL 包含片段时,iframe 会导致父元素在 Google Chrome 上向上滚动