Vue中 iframe 的内容加载慢,实现加载(Loading)效果

Posted 明天也要努力

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vue中 iframe 的内容加载慢,实现加载(Loading)效果相关的知识,希望对你有一定的参考价值。

需求:
由于 iframe 的内容加载较慢,需要在加载完成前添加 loading 效果。
本文 loading 使用的是 Element 框架的加载(Loading)组件。

功能实现完整代码

<template>
  <div style="height:1000px;" v-loading="loading">
    <iframe 
      ref="Iframe" 
      src="https://www.taobao.com/" 
      width="100%" 
      height="100%" 
      frameborder="0">
    </iframe>
  </div>
</template>

<script>
export default {
  data() {
    return {
      loading: false,
    };
  },
  methods: {
    iframeLoad(){
      this.loading = true;
      const iframe = this.$refs.Iframe;
      if (iframe.attachEvent) { // IE
        iframe.attachEvent('onload', () => { this.loading = false; });
      } else { // 非IE
        iframe.onload =  () => { this.loading = false; };
      }
    }
  },
  mounted() {
    this.iframeLoad();
  },
};
</script>

延伸

< iframe > 标签属性

属性描述
frameborder1 有边框(默认值);0 关闭边框规定是否显示 iframe 周围的边框
heightpx;%;规定 iframe 的高度
longdescURL规定一个页面,该页面包含了有关 iframe 的较长描述
marginheightpx定义 iframe 的顶部和底部的边距
marginwidthpx定义 iframe 的左侧和右侧的边距
nameframe_name规定 iframe 的名称
scrollingyes ; no ; auto;规定是否在 iframe 中显示滚动条
seamlessseamless规定 < iframe > 看上去像是包含文档的一部分
srcURL规定在 iframe 中显示的文档的 URL
srcdochtml_code规定在 < iframe > 中显示的页面的 HTML 内容
widthpx; %;定义 iframe 的宽度

全局属性
< iframe > 标签支持 HTML 中的全局属性。

事件属性
< iframe > 标签支持 HTML 中的事件属性。

以上是关于Vue中 iframe 的内容加载慢,实现加载(Loading)效果的主要内容,如果未能解决你的问题,请参考以下文章

webview部分手机无法加载iframe内容

为啥页面加载多个iframe和div运行速度超慢?

JS iFrame 加载慢怎么解决

加载 iFrame 时如何显示加载消息?

iframe实现vue嵌套外部系统

vue-router路由懒加载(解决vue项目首次加载慢)