【js】setInterval是个坑!chrome定时截图保存实现
2021/5/11 10:58:57
本文主要是介绍【js】setInterval是个坑!chrome定时截图保存实现,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
chrome定时保存技术点:
1 网页截图
利用chrome API实现,参考:开发文档(中文版)
连接中有测试截图扩展的例子,主要用到的chrome.browserAction.onClicked,chrome.tabs.captureVisibleTab等方法
(官方文档:https://developer.chrome.com/extensions/getstarted)
2 图片保存到本地
用链接< a >的download属性,HTMLevent实现图片下载到本地,通过设置chrome默认下载路径来实现自动下载。
参考链接:http://www.jb51.net/article/47723.htm
!注意:
src=”data:image/gif;base64,R0lGOXXXXX” ,链接中提供的方法的content参数是指分号后的内容,所以要下图片的话直接用aLink.href = “data:image/gif;base64,R0lGOXXXXX”的完整路径。
代码如下:
function downloadFile(fileName, url) { var self = this; var aLink = document.createElement('a'); var evt = document.createEvent("HTMLEvents"); evt.initEvent("click", false, false); aLink.download = fileName; aLink.href = url; aLink.dispatchEvent(evt); // 延迟关闭下载页面 setTimeout(function() { self.window.close(); }, 5000); }
3 定时执行(时间间隔)
!!!一定不要用setInterval()!!!简直是个坑,出各种问题。。让人心力交瘁QAQ
用嵌套的setTimeout来代替实现比较可控,下面是模板框架:
var flag = false; var interval = 1000; chrome.browserAction.onClicked.addListener(() => { start(); }); function start() { flag = true; loop(); } function stop() { flag = false; } function loop() { //记住要判断三遍! if (flag) { realFunc().then(() => { if (flag) { setTimeout(() => { if (flag) { loop(); } }, interval); } }); } } function realFunc() { return new Promise((resolve, reject) => { console.log("doing"); setTimeout(() => { //异步 console.log("done"); resolve(); }, 2000); }); }
完整插件代码:
https://github.com/xn11/Timing-screenshot
这篇关于【js】setInterval是个坑!chrome定时截图保存实现的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-30React Native常用组件-点击组件
- 2024-05-30uniapp+vue3+uv-ui手机端后台OA管理模板
- 2024-05-29Python网络爬虫的时候json=就是让你少写个json.dumps()
- 2024-05-27React Native常用组件-展示组件
- 2024-05-27React Native常用组件-列表组件
- 2024-05-09vue3开发前端表单缓存自定义指令,移动端h5必备插件
- 2024-05-09React Hooks在class组件中的使用方式
- 2024-03-30[OIDC in Action] 2. 基于OIDC(OpenID Connect)的SSO(纯JS客户端)
- 2024-03-29terraform jsonencode
- 2024-03-13vuex-persist