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>
上面是正常情况
以上两种情况在需求中均算错误,
需求:
获取触发监听的onload事件,此项已完成
获取页面是否成功渲染信息,并区分【成功获取并成功渲染、成功获取但渲染失败、获取失败】,此项未完成
通过以下两种方法可以判断是否渲染完成
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);
跨域的估计无法区分
好像无法捕获
直接在你客服端 用接口请求去请求 iframe 的src 应该就能知道 跨域或者 失败 等等 的情况
跨域的话使用:
iframe + document.domain
iframe + location.hash
iframe + window.name
提供一种思路,具体的可以百度去解决问题
监听某个值的变化,比如页面graph的占用的缓存