问题:自动化录制插件开发,每次录制结束,如果直接点击关闭而不通过自动化窗口提供的按钮实现,则下一次窗口打开的时候出现错乱,步骤显示、tabid显示等问题。经过排查,窗口新开是在父级框架,同时正常点击录制窗口关闭会有一个chrome.window.remove的操作。
就目前的情况来看,只能先通过监听关闭的方法解决一下。
浏览器监听中刷新和关闭事件有点类似:
页面关闭时先执行onbeforeunload,然后onunload
页面刷新时先执行onbeforeunload,然后onunload,最后onload。
但是据资料查看,浏览器刷新和关闭执行的时间还是有区别的,在简单页面(也就是不需要加载什么文件的时候),关闭大概也就3ms,而加载至少8ms,用到公司脚本录制页面,关闭事件的onbeforeunload到onunload依然在3ms左右,刷新的时间差却是几百毫秒。网上资料,大概也是如此。
目前是在foreground.js(谷歌插件开发的一个相当远前端js的文件),毕竟录制插件的监听也都在这里。
$(document).ready(function () {
XXXXXXXXX
***其他监听方法***
//监听浏览器异常关闭
var beginTime =0;//执行onbeforeunload的开始时间
var differTime = 0;//时间差
window.onunload = function (){
differTime = new Date().getTime() - beginTime;
if(differTime <= 5) {
console.log("浏览器关闭")
//触发关闭事件,向后端background.js方法发送信息
chrome.runtime.sendMessage({
type: 'removeData'
}, function (response) {
})
}else{
console.log("浏览器刷新")
}
}
window.onbeforeunload = function (){
beginTime = new Date().getTime();
};
});