chrome.alarms

refresh date: 2026-09-25 robots: noindex

Mô tả

Sử dụng API chrome.alarms để lên lịch chạy mã định kỳ hoặc vào một thời điểm cụ thể trong tương lai.

Quyền

alarms

Tệp kê khai

Để sử dụng API chrome.alarms, hãy khai báo quyền "alarms" trong tệp kê khai:

{
  "name": "My extension",
  ...
  "permissions": [
    "alarms"
  ],
  ...
}

Ví dụ

Các ví dụ sau đây cho thấy cách sử dụng và phản hồi chuông báo. Để dùng thử API này, hãy cài đặt Ví dụ về API báo thức từ kho lưu trữ chrome-extension-samples.

Đặt chuông báo

Ví dụ sau đây đặt chuông báo trong trình chạy dịch vụ khi tiện ích được cài đặt:

service-worker.js:

chrome.runtime.onInstalled.addListener(async ({ reason }) => {
  if (reason !== 'install') {
    return;
  }

  // Create an alarm so we have something to look at in the demo
  await chrome.alarms.create('demo-default-alarm', {
    delayInMinutes: 1,
    periodInMinutes: 1
  });
});

Phản hồi chuông báo

Ví dụ sau đây đặt biểu tượng thanh công cụ hành động dựa trên tên của chuông báo đã tắt.

service-worker.js:

chrome.alarms.onAlarm.addListener((alarm) => {
  chrome.action.setIcon({
    path: getIconPath(alarm.name),
  });
});

Loại

Alarm

Thuộc tính

  • tên

    chuỗi

    Tên của chuông báo này.

  • periodInMinutes

    number không bắt buộc

    Nếu không rỗng, chuông báo là chuông báo lặp lại và sẽ đổ chuông lại sau periodInMinutes phút.

  • persistAcrossSessions

    boolean

    Chrome 150 trở lên

    Liệu chuông báo có nên duy trì qua các phiên (khởi động lại trình duyệt) hay không.

  • scheduledTime

    số

    Thời gian mà chuông báo này được lên lịch kích hoạt, tính bằng mili giây sau thời gian bắt đầu (ví dụ: Date.now() + n). Vì lý do hiệu suất, chuông báo có thể bị trì hoãn một khoảng thời gian tuỳ ý sau thời gian này.

AlarmCreateInfo

Thuộc tính

  • delayInMinutes

    number không bắt buộc

    Khoảng thời gian (tính bằng phút) sau đó sự kiện onAlarm sẽ kích hoạt.

  • tên

    chuỗi không bắt buộc

    Chrome 152 trở lên

    Tên của chuông báo này.

  • periodInMinutes

    number không bắt buộc

    Nếu được đặt, sự kiện onAlarm sẽ kích hoạt sau mỗi periodInMinutes phút kể từ sự kiện ban đầu được chỉ định bởi when hoặc delayInMinutes. Nếu bạn không đặt, chuông báo sẽ chỉ kích hoạt một lần.

  • persistAcrossSessions

    boolean không bắt buộc

    Chrome 150 trở lên

    Liệu chuông báo có nên duy trì qua các phiên (khởi động lại trình duyệt) hay không. Trong Chrome, giá trị mặc định là true để phù hợp với hành vi trước đây, nhưng bạn nên đặt giá trị này một cách rõ ràng để tối đa hoá khả năng tương thích trên các trình duyệt.

  • khi

    number không bắt buộc

    Thời gian chuông báo sẽ kích hoạt, tính bằng mili giây sau thời gian bắt đầu của hệ thống (ví dụ: Date.now() + n).

Phương thức

clear()

Promise
chrome.alarms.clear(
  name?: string,
  callback?: function,
)
: Promise<boolean>

Xoá chuông báo có tên đã cho.

Thông số

  • tên

    chuỗi không bắt buộc

    Tên của chuông báo cần xoá. Giá trị mặc định là chuỗi trống.

  • callback

    hàm không bắt buộc

    Tham số callback có dạng như sau:

    (wasCleared: boolean) => void

    • wasCleared

      boolean

Giá trị trả về

  • Promise<boolean>

    Chrome 91 trở lên

    Lời hứa chỉ được hỗ trợ cho Manifest V3 trở lên, các nền tảng khác cần sử dụng lệnh gọi lại.

clearAll()

Promise
chrome.alarms.clearAll(
  callback?: function,
)
: Promise<boolean | undefined>

Xoá tất cả chuông báo.

Thông số

  • callback

    hàm không bắt buộc

    Tham số callback có dạng như sau:

    (wasCleared?: boolean) => void

    • wasCleared

      boolean không bắt buộc

Giá trị trả về

  • <boolean | undefined> hứa hẹn

    Chrome 91 trở lên

    Lời hứa chỉ được hỗ trợ cho Manifest V3 trở lên, các nền tảng khác cần sử dụng lệnh gọi lại.

create()

Promise
chrome.alarms.create(
  name?: string,
  alarmInfo: AlarmCreateInfo,
  callback?: function,
)
: Promise<void>

Tạo chuông báo. Gần(các) thời điểm do alarmInfo chỉ định, sự kiện onAlarm sẽ được kích hoạt. Nếu có một chuông báo khác có cùng tên (hoặc không có tên nếu không được chỉ định), thì chuông báo đó sẽ bị huỷ và được thay thế bằng chuông báo này.

Để giảm tải cho máy của người dùng, Chrome giới hạn chuông báo ở mức tối đa một lần mỗi giây nhưng có thể trì hoãn thêm một khoảng thời gian tuỳ ý. Tức là việc đặt delayInMinutes hoặc periodInMinutes thành dưới 1 giây sẽ không được chấp nhận và sẽ gây ra cảnh báo. Bạn có thể đặt when thành ít hơn 1 giây sau "bây giờ" mà không có cảnh báo, nhưng thực tế sẽ không khiến chuông báo kích hoạt trong ít nhất 1 giây.

Thông số

  • tên

    chuỗi không bắt buộc

    Tên không bắt buộc để xác định chuông báo này. Giá trị mặc định là chuỗi trống.

  • alarmInfo

    Mô tả thời điểm chuông báo sẽ kích hoạt. Bạn phải chỉ định thời gian ban đầu bằng when hoặc delayInMinutes (nhưng không phải cả hai). Nếu bạn đặt periodInMinutes, chuông báo sẽ lặp lại sau mỗi periodInMinutes phút kể từ sự kiện ban đầu. Nếu bạn không đặt when hoặc delayInMinutes cho chuông báo lặp lại, thì periodInMinutes sẽ được dùng làm giá trị mặc định cho delayInMinutes.

  • callback

    hàm không bắt buộc

    Chrome 111 trở lên

    Tham số callback có dạng như sau:

    () => void

Giá trị trả về

  • Promise<void>

    Chrome 111 trở lên

    Lời hứa sẽ giải quyết khi chuông báo được tạo.

    Lời hứa chỉ được hỗ trợ cho Manifest V3 trở lên, các nền tảng khác cần sử dụng lệnh gọi lại.

get()

Promise
chrome.alarms.get(
  name?: string,
  callback?: function,
)
: Promise<Alarm | undefined>

Truy xuất thông tin chi tiết về chuông báo được chỉ định.

Thông số

  • tên

    chuỗi không bắt buộc

    Tên của chuông báo cần lấy. Giá trị mặc định là chuỗi trống.

  • callback

    hàm không bắt buộc

    Tham số callback có dạng như sau:

    (alarm?: Alarm) => void

Giá trị trả về

  • Promise<Alarm | undefined>

    Chrome 91 trở lên

    Lời hứa chỉ được hỗ trợ cho Manifest V3 trở lên, các nền tảng khác cần sử dụng lệnh gọi lại.

getAll()

Promise
chrome.alarms.getAll(
  callback?: function,
)
: Promise<Alarm[]>

Lấy một mảng gồm tất cả chuông báo.

Thông số

  • callback

    hàm không bắt buộc

    Tham số callback có dạng như sau:

    (alarms: Alarm[]) => void

Giá trị trả về

  • Promise<Alarm[]>

    Chrome 91 trở lên

    Lời hứa chỉ được hỗ trợ cho Manifest V3 trở lên, các nền tảng khác cần sử dụng lệnh gọi lại.

Sự kiện

onAlarm

chrome.alarms.onAlarm.addListener(
  callback: function,
)

Được kích hoạt khi chuông báo đã hết thời gian. Hữu ích cho các trang sự kiện.

Thông số

  • callback

    hàm

    Tham số callback có dạng như sau:

    (alarm: Alarm) => void