远哥挺乐 2021-12-27 12:13 采纳率: 50%
浏览 208
已结题

如果给iframe的网页渲染失败,怎么得知(语言-javascript)

Vue

<template>
    <!--显示框-->
    <el-container>
      <iframe :src="showPageUrl"
              width="100%"
              frameborder="0"
              ref="iframe">
      </iframe>
    </el-container>
</template>


<script>
export default {
  name: "others",
  data() {
    return {
      showPageUrl: 'http://www.csi.ac.cn/', 
      iframe: null,
    }
  },
  methods: {
    changeUrl(urlVal) {
      this.showPageUrl = urlVal;
      this.loading = true;
    },
    handleLoad(value) {
      // 逻辑怎么写
      }
    }
  },
  mounted() {
    // 这里就拿到了iframe对象
    this.iframe = this.$refs.iframe
    // 添加onload的监听,并且绑定处理函数handleLoad
    this.iframe.addEventListener('load', this.handleLoad)
  }
}
</script>

上面是正常情况

特殊情况
  1. http://www.bjdzj.gov.cn/
    此网页可正常访问,但无法渲染,报错:Refused to display 'http://www.bjdzj.gov.cn/' in a frame because it set 'X-Frame-Options' to 'sameorigin'.
  2. 404:随便写个不存在的网址就行

以上两种情况在需求中均算错误,

需求:

  • 获取触发监听的onload事件,此项已完成

  • 获取页面是否成功渲染信息,并区分【成功获取并成功渲染、成功获取但渲染失败、获取失败】,此项未完成

  • 写回答

6条回答 默认 最新

  • 神仙别闹 2021-12-27 12:32
    关注
    获得1.10元问题酬金

    通过以下两种方法可以判断是否渲染完成

    
    var iframe = document.createElement("iframe");
    iframe.src = "http://www.baidu.com/";
    
    if (!/*@cc_on!@*/0) { //if not IE
        iframe.onload = function(){
            alert("框架加载完毕.");
        };
    } else {
        iframe.onreadystatechange = function(){
            if (iframe.readyState == "complete"){
                alert("框架加载完毕.");
            }
        };
    }
    
    document.body.appendChild(iframe);
    
    //方法二
    var iframe = document.createElement("iframe");
    iframe.src = "http://www.baidu.com/";
    
    if (iframe.attachEvent){
        iframe.attachEvent("onload", function(){
            alert("Local iframe is now loaded.");
        });
    } else {
        iframe.onload = function(){
            alert("Local iframe is now loaded.");
        };
    }
    
    document.body.appendChild(iframe);
    
    评论

报告相同问题?

问题事件

  • 系统已结题 1月4日
  • 创建了问题 12月27日

悬赏问题

  • ¥20 需要帮我远程操控一下,运行一下我的那个代码,我觉得我无能为力了
  • ¥20 有偿:在ubuntu上安装arduino以及其常用库文件。
  • ¥15 请问用arcgis处理一些数据和图形,通常里面有一个根据点划泰森多边形的命令,直接划的弊端是只能执行一个完整的边界,但是我们有时候会用到需要在有很多边界内利用点来执行划泰森多边形的命令
  • ¥30 在wave2foam中执行setWaveField时遇到了如下的浮点异常问题,请问该如何解决呢?
  • ¥750 关于一道数论方面的问题,求解答!(关键词-数学方法)
  • ¥200 csgo2的viewmatrix值是否还有别的获取方式
  • ¥15 Stable Diffusion,用Ebsynth utility在视频选帧图重绘,第一步报错,蒙版和帧图没法生成,怎么处理啊
  • ¥15 请把下列每一行代码完整地读懂并注释出来
  • ¥15 寻找公式识别开发,自动识别整页文档、图像公式的软件
  • ¥15 为什么eclipse不能再下载了?