alarms.create()

创建一个新的浏览器会话闹钟。一个闹钟可以触发一次或多次。闹钟在最后一次触发后会被清除。

注意: 从 Chrome 117 开始,活动闹钟的数量限制为 500。达到此限制时,闹钟创建将失败。

语法

js
browser.alarms.create(
  name,              // optional string
  alarmInfo          // optional object
)

参数

name 可选

string。闹钟的名称。默认为空字符串。

这可用于在 alarms.get()alarms.clear() 中引用特定闹钟。它也将作为传递给监听器函数的 alarms.Alarm 对象的 name 属性在 alarms.onAlarm 中可用。

闹钟名称在单个扩展的作用域内是唯一的。如果存在同名闹钟,则现有闹钟将被清除,正在创建的闹钟将取代它。

alarmInfo 可选

object。您可以使用它来指定闹钟的初始触发时间,可以是绝对值 (when) 或距离设置闹钟的时间的延迟 (delayInMinutes)。要使闹钟重复,请指定 periodInMinutes

在 Chrome 中,除非扩展是解包加载的,否则闹钟不会每 30 秒触发一次以上。如果扩展设置 delayInMinutes 的值为 < 0.5,或 when 的值为 < 0.5,则闹钟在设置后 30 秒触发。如果扩展设置 periodInMinutes 的值为 < 0.5,则闹钟每 30 秒触发一次。将 delayInMinutesperiodInMinutes 设置为 < 0.5 会导致警告。闹钟触发可能会被任意延迟。在 Chrome 120 之前,此限制为一分钟。

alarmInfo 对象可能包含以下属性

when 可选

double。闹钟的第一次触发时间,以 自纪元以来的毫秒数给出。要获取纪元和当前时间之间的毫秒数,请使用 Date.now()。如果指定了 when,请勿指定 delayInMinutes

delayInMinutes 可选

double。闹钟的第一次触发时间,以距离设置闹钟的时间的分钟数给出。如果指定了 delayInMinutes,请勿指定 when

periodInMinutes 可选

double。如果指定了此值,则闹钟将在初始触发后每 periodInMinutes 再次触发。如果您指定此值,则可以省略 whendelayInMinutes,然后闹钟将在 periodInMinutes 后初始触发。如果未指定 periodInMinutes,则闹钟仅触发一次。

返回值

一个 Promise,它以无参数的方式完成。

示例

创建一个一次性的基于延迟的闹钟,名称为空字符串 ""

js
function onAdded() {
  console.log("Alarm Added!");
}

let delayInMinutes = 5;

let addingAlarm = browser.alarms.create({
  delayInMinutes,
});
addingAlarm.then(onAdded);

创建一个名为“my-periodic-alarm”的周期性基于延迟的闹钟

js
const delayInMinutes = 5;
const periodInMinutes = 2;

browser.alarms.create("my-periodic-alarm", {
  delayInMinutes,
  periodInMinutes,
});

创建一个名为“my-periodic-alarm”的周期性绝对闹钟

js
const when = 1545696000;
const periodInMinutes = 2;

browser.alarms.create("my-periodic-alarm", {
  when,
  periodInMinutes,
});

浏览器兼容性

注意: 此 API 基于 Chromium 的 chrome.alarms API。