chrome 扩展,每 x 分钟执行一次

2024-04-08

我只是做一个简单的 chrome 扩展。

我希望我的后台页面(或部分)每 5 分钟执行一次,以获取一些数据并显示桌面通知(如果有)。我该如何执行此操作


重要提示:如果您使用非持久后台脚本(Manifest V3service_worker或清单V2活动页面 https://developer.chrome.com/extensions/event_pages with "persistent": false在清单.json中),setInterval间隔 5 分钟可能会失败,因为后台脚本将在空闲超时(30 秒)后卸载,除非您很幸运有其他chrome事件侦听器在中间触发,或者您故意使后台脚本保持活动状态(MV3 /a/66618269, MV2 /q/37017209).

如果您的扩展程序使用 window.setTimeout() 或 window.setInterval(),请改用警报 API。如果事件页面关闭,基于 DOM 的计时器将不会被执行。

在这种情况下,您需要使用chrome.alarms https://developer.chrome.com/extensions/alarms API:

chrome.alarms.create("5min", {
  delayInMinutes: 5,
  periodInMinutes: 5
});

// To ensure a non-persistent script wakes up, call this code at its start synchronously
chrome.alarms.onAlarm.addListener(function(alarm) {
  if (alarm.name === "5min") {
    doStuff();
  }
});

如果有持久的后台页面,setInterval仍然是可以接受的solution https://stackoverflow.com/a/8490416/934239。如果您确保结束时间在空闲超时的剩余时间内,它也应该在非持久性脚本中以较短的间隔(以秒为单位,而不是分钟)工作,请参阅上面的注释。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

chrome 扩展,每 x 分钟执行一次 的相关文章

  • 有没有办法在javascript中代理(拦截)一个类的所有方法?

    我希望能够在类本身的构造函数内代理类的所有方法 class Boy constructor proxy logic do something before each call of all methods inside class like
  • Flex、AngularJS + Masonry、akoenig/angular-deckgrid 等 [重复]

    这个问题在这里已经有答案了 我一直在发送此电子邮件 我即将发布一个用于 Web 应用程序安全的应用程序 它需要使用像 Masonry 这样的网格 我已经尝试过所有的 每一个角度模块 指令和不同的方法 包括基于 CSS 的技术 纯 Vanil
  • 在 React 组件中等待异步函数并显示 Spinner

    初学者在这里 尝试从服务器获取一些数据并在获取后将其显示在我的反应组件中 但是 我在将异步函数集成到我的反应组件中时遇到了麻烦 import React useState from react import request from gra
  • 网络上的等角柱状图

    我计划为游戏的标记 图钉 构建在线地图 但我无法设置标记的正确纬度 原始地图是一个2048 2048px 的正方形 然后我得到了标记 数千个 地图坐标使用 0 到 100 之间的 x y 表示法设置 0 0 是top left角和100 1
  • 为什么 Promise `.then` 方法的回调是反模式

    我在 StackOverflow 上看到了答案 人们建议为 AngularJS 服务提供回调函数 app controller tokenCtrl function scope tokenService tokenService getTo
  • 用更好的模式替换开关(Javascript)

    我必须升级我的应用程序以根据用户类型和角色属性显示页面 目前 我使用一个简单的 switch 语句来根据用户类型来执行此操作 例如 switch type case a return CONSTANT ONE case b return C
  • 在动态创建的元素的onclick函数的属性中传递一个字符串

    我试图在动态创建的锚元素的 onClick 事件处理函数的参数中传递一个字符串 请参阅小提琴http jsfiddle net shmdhussain bXYe4 http jsfiddle net shmdhussain bXYe4 我无
  • 仅从功能区打开一个对话框

    我有一个带有登录按钮的功能区 可打开登录对话框 我想将对话框的数量限制为一个 我正在使用函数 displayDialogAsync startAddress options callback https learn microsoft co
  • 替换img路径jquery

    我正在尝试替换 jquery 中的 img 路径 注入远程页面 replaceexample com thumbs withexample com images 我已经尝试过这个 但似乎不起作用 img attr src replace t
  • 如何在单击按钮时清除反应挂钩中的间隔

    我正在用反应钩子构建一个简单的计时器 我有两个按钮启动和重置 当我单击开始按钮时 handleStart 函数工作正常 计时器启动 但我不知道如何在单击重置按钮时重置计时器 这是我的代码 const App gt const timer s
  • NodeJS - 将相对路径转换为绝对路径

    In my 文件系统我的工作目录在这里 C temp a b c d 在 b bb 下有文件 tmp txt C temp a b bb tmp txt 如果我想从工作目录转到该文件 我将使用以下路径 bb tmp txt 如果该文件不存在
  • 如何跨多个 React Redux 组件使用 requestAnimationFrame 实现游戏循环?

    努力思考最好的解决办法 我可以使用递归调用requestAnimationFrame有一个游戏循环 export interface Props name string points number onIncrement gt void o
  • JS:修改 JS 对象中的值/对

    我正在尝试找出修改对象的最佳方法 而无需三次写出类似的对象 所以我有这三个对象 var object1 start start end end type 1 var object2 start start end end type 2 va
  • 将默认搜索文本添加到搜索框 html

    我正在努力将 搜索 文本添加到搜索框 我正在努力实现 onfocus 消失文本 And onblur 重新出现文本 到目前为止 我已经实现了这一点 但我必须将其硬编码为 html eg
  • 为什么 console.log() polyfill 不使用 Function.apply()?

    我一直在看一些流行的console log 包装 填充 保罗 爱尔兰的 http paulirish com 2009 log a lightweight wrapper for consolelog 本阿尔曼的 http benalman
  • chrome 选项卡/窗口中的 window.open 行为

    我有一小段 javascript 旨在打开两个或更多选项卡 这在 FF 和 IE 中工作正常 但 chrome 会在新窗口而不是选项卡中打开第二个窗口 它不依赖于 url 因为我已经尝试过使用两个相同的 url 第一个在选项卡中打开 第二个
  • 测试 jQueryUI 是否已加载

    我正在尝试调试网站 并且我认为 jQueryUI 可能未正确加载 如何测试 jQueryUI 是否已加载 if jQuery ui UI loaded OR if typeof jQuery ui undefined UI loaded 应
  • 使用严格模式编译指示时如何声明全局变量

    使用自调用函数来包装严格模式兼容代码 通常称为严格模式编译指示 被认为是一种很好的做法 function use strict Strict code here 我的问题是在这种情况下如何声明全局变量 我今天知道的三种替代方案 替代方案 1
  • YouTube 点击时禁用 HTML5

    有没有办法让我们通过javascript禁用HTML5视频的 播放 暂停 点击全屏 功能 然后在我们再次需要时将其放回去 我不知道你是否可以禁用它们 但你可以使用 css 删除它们 video webkit media controls f
  • 突出显示单词并提取其附近文本的函数

    我有一个文本例如 Etiam porta semmalesuada magna mollis euismod 整数取数 ante venenatis dapibus posuere velit aliquet 埃蒂亚姆 门塔 塞姆 male

随机推荐

  • 无法运行 XAMPP - MySql

    当我尝试启动 XAMPP MySql 时 它不起作用 我已经尝试修复它 但我找不到任何实际的解决方案 我希望你能找到问题所在 有日志 2019 06 26 9 08 35 0 Note InnoDB Mutexes and rw locks
  • 为了速度/性能什么时候应该、不应该脱离 OOP?

    在 Android 开发者文章中 Google 指出 您通常应该声明公共变量 而不是带有 getter 和 setter 的私有变量 以增强嵌入式设备的性能 我认为函数调用比仅仅写入地址更昂贵 我想知道 应该在多大程度上牺牲性能来坚持 OO
  • 如何在列表框中设置对齐格式

    我将值添加到列表框 for int i 0 i lt 2 i lbBeamValue Items Add Beam i ToString value1 i Angle i ToString value2 i 显示如下 Beam 0 0 12
  • 仅保留 JavaScript 对象中的某些属性

    我有一个对象 我想通过删除除某些特定属性之外的所有属性来修改对象 而不是克隆它 例如 如果我从这个对象开始 var myObj p1 123 p2 321 p3 p3 1 1231 p3 2 342 p4 23423 p99 p99 1 s
  • 截断分页中的页数

    这可能是一个非常愚蠢的问题 但我想不出任何可以帮助我走得更远的东西 我希望缩短页面导航中的数字数量 而不是像 1 2 3 4 5 6 7 8 我希望它像 1 2 7 8 当我去2 数字3现在应该可以在数字组中看到 这是我负责页码的代码 di
  • MySQL 最大用户连接数与最大连接数

    可悲的是 我在任何地方都找不到对此查询的任何直接解释 甚至在 MySQL 文档中也找不到 各个论坛上的一些人说 max user connections 永远不能大于 max connections 例如 如果一个用户有3 max user
  • mutableStateOf 和 mutableStateListOf 有什么区别?

    在与一个ViewModel and a List存储在那里 我通常遵循这种方法 var characteristics by mutableStateOf listOf
  • Emacs、Vim 和 JEdit 中哪些编辑器支持同时多个文本插入点?

    背景 JEdi t 以及其他一些文本编辑器 支持称为多个同时文本插入点 http groups csail mit edu uid projects simuledit usenix01 html 至少我在这里这么称呼它 要了解这意味着什么
  • 使用 STM32 USB 设备库将闪存作为大容量存储设备

    我的板上有这个闪存IC 它连接到我的STM32F04 ARM处理器 处理器的USB端口可供用户使用 我希望我的闪存在通过 USB 连接到 PC 时被检测为存储设备 作为第一步 我在程序中将 USB 类定义为 MSC 效果很好 因为当我将主板
  • Laravel 5 - Php artisan 语法错误

    我目前正在使用 Laravel 5 开发一个应用程序 突然工匠停止工作了 我无法对其使用单个命令 它总是返回错误 Symfony Component Debug Exception FatalErrorException syntax er
  • 什么时候值得使用数据库?

    我有一个与数据库有关的问题 以及什么时候值得深入研究 我主要是一名嵌入式工程师 但我正在使用 Qt 编写一个应用程序来与我们的控制器交互 我们正处于一个奇怪的境地 我们有足够的数据 可以实现一个数据库 大约 700 多个项目并且还在不断增长
  • EF4 审核多对多关系的更改

    我正在将审核添加到我的 EF4 模型优先 应用程序中 我可以获得有关发生更改的实体的结构属性的详细信息 我还可以看到多对多关系何时发生变化 我可以看到所涉及类型的名称以及发生的情况 添加或删除 但我真正想要的是关系更改中涉及的实体的 ID
  • 使用 scala 时 lambda 的 AWS 凭证不起作用

    尝试使用通过 DefaultCredentialProvider 提供的凭证时 AWS lambda 函数不起作用 我需要将凭据传递给 S3 才能运行 Code def initializeAwsCredentials AWSCredent
  • iOS Firebase - 如何从不同节点中删除具有相同密钥的子节点

    我有一个名为 以下 的裁判 在该引用下 有 2 个不同的 userId 关注同一用户 如果他们都关注的用户想要删除他们的帐户 我想从关注节点中删除他们 多位置更新似乎不正确地实现此目的 如何做呢 用户 kk8qFOIw 是正在删除其帐户的用
  • 如何追加到 R 中的现有文件而不覆盖它?

    我想写入一个文件 然后在循环中多次追加它 在 Windows 机器上 每次追加后 我想关闭连接 因为我希望该文件存入保管箱帐户 以便我可以在代码运行时在其他计算机上打开它 以检查日志文件的状态 注意 这个条件使得这个问题不同于SO上关于si
  • Dagger 2 构建 IllegalArgumentExceptioncompileDebugJavaWithJavac

    我一直在测试 Dagger 2 一切都正常 直到我做了一些重构 现在 gradle 正在抛出一个IllegalArgumentException 而且我无法弄清楚我所做的更改现在导致了错误 我没有对 gradle 文件进行任何更改 这似乎是
  • r 沿着向量搜索并计算平均值

    我的数据看起来像 require data table DT lt data table x c 19 19 19 21 21 19 19 22 22 22 y c 53 54 55 32 44 45 49 56 57 58 我想沿着 x
  • 自动将 GitHub 分支部署到 AWS Elastic Beanstalk

    说我有一个分支stable在 GitHub 上 我希望在提交时自动部署到我的 AWS EB 实例 我看过CodePipeline 这在我托管实例的区域不可用 我也看过CodeDeploy但这似乎仅适用于 EC2 的单个实例 而不适用于Ela
  • 骆驼http端点动态形成url

    我正在尝试使用的伙计们 from direct a to someUrl processor new Processor Override public void process Exchange arg0 throws Exception
  • chrome 扩展,每 x 分钟执行一次

    我只是做一个简单的 chrome 扩展 我希望我的后台页面 或部分 每 5 分钟执行一次 以获取一些数据并显示桌面通知 如果有 我该如何执行此操作 重要提示 如果您使用非持久后台脚本 Manifest V3service worker或清单