zoukankan      html  css  js  c++  java
  • 【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

    漫思
  • 相关阅读:
    div 圆角
    CSS定义鼠标经过时鼠标图型样式
    如何判断浏览器类型然后让它读取指定的CSS
    如何分别指定ie6及ie7浏览器的css
    用CSS控制DIV居中失效的解决方法
    css如何控制文字多行显示,溢出截断后末尾出现省略...
    样式命名规则
    type="file" 谁用过这个属性给定义样式
    有利于SEO的DIV+CSS的命名规矩小结
    左右两个div高度自动一致,自适应高度
  • 原文地址:https://www.cnblogs.com/sexintercourse/p/14754270.html
Copyright © 2011-2022 走看看