refresh date: 2026-09-25 robots: noindex
คำอธิบาย
ใช้ chrome.alarms API เพื่อกำหนดเวลาให้โค้ดทำงานเป็นระยะๆ หรือตามเวลาที่ระบุในอนาคต
สิทธิ์
alarmsไฟล์ Manifest
หากต้องการใช้ chrome.alarms API ให้ประกาศสิทธิ์ "alarms" ในไฟล์ Manifest ดังนี้
{
"name": "My extension",
...
"permissions": [
"alarms"
],
...
}
ตัวอย่าง
ตัวอย่างต่อไปนี้แสดงวิธีใช้และตอบสนองต่อการปลุก หากต้องการลองใช้ API นี้ ให้ติดตั้งตัวอย่าง Alarm API จากที่เก็บ chrome-extension-samples
ตั้งปลุก
ตัวอย่างต่อไปนี้จะตั้งค่าการปลุกใน Service Worker เมื่อติดตั้งส่วนขยาย
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
});
});
ตอบสนองต่อสัญญาณเตือน
ตัวอย่างต่อไปนี้จะตั้งค่าไอคอนแถบเครื่องมือการดำเนินการตามชื่อของการปลุกที่ดังขึ้น
service-worker.js:
chrome.alarms.onAlarm.addListener((alarm) => {
chrome.action.setIcon({
path: getIconPath(alarm.name),
});
});
ประเภท
Alarm
พร็อพเพอร์ตี้
-
name
สตริง
ชื่อของการปลุกนี้
-
periodInMinutes
number ไม่บังคับ
หากไม่ใช่ค่า Null การปลุกจะเป็นการปลุกซ้ำและจะดังอีกครั้งใน
periodInMinutesนาที -
persistAcrossSessions
บูลีน
Chrome 150 ขึ้นไปการปลุกควรคงอยู่ตลอดเซสชัน (การรีสตาร์ทเบราว์เซอร์) หรือไม่
-
scheduledTime
ตัวเลข
เวลาที่กำหนดให้ส่งเสียงปลุกนี้เป็นมิลลิวินาทีที่ผ่านไปนับจาก Epoch (เช่น
Date.now() + n) ด้วยเหตุผลด้านประสิทธิภาพ การปลุกอาจล่าช้าไปตามจำนวนที่กำหนดไว้เกินกว่านี้
AlarmCreateInfo
พร็อพเพอร์ตี้
-
delayInMinutes
number ไม่บังคับ
ระยะเวลาเป็นนาทีหลังจากที่เหตุการณ์
onAlarmควรเริ่มทำงาน -
name
สตริง ไม่บังคับ
Chrome 152 ขึ้นไปชื่อของการปลุกนี้
-
periodInMinutes
number ไม่บังคับ
หากตั้งค่าไว้ เหตุการณ์ onAlarm ควรเริ่มทำงานทุกๆ
periodInMinutesนาทีหลังจากเหตุการณ์เริ่มต้นที่ระบุโดยwhenหรือdelayInMinutesหากไม่ได้ตั้งค่าไว้ การปลุกจะเริ่มทำงานเพียงครั้งเดียว -
persistAcrossSessions
บูลีน ไม่บังคับ
Chrome 150 ขึ้นไปการปลุกควรคงอยู่ตลอดเซสชัน (การรีสตาร์ทเบราว์เซอร์) หรือไม่ ใน Chrome ค่านี้จะมีค่าเริ่มต้นเป็น "จริง" เพื่อให้ตรงกับลักษณะการทำงานที่ผ่านมา แต่คุณควรตั้งค่านี้อย่างชัดเจนเพื่อเพิ่มความเข้ากันได้ในเบราว์เซอร์ต่างๆ ให้สูงสุด
-
เมื่อใด
number ไม่บังคับ
เวลาที่ควรส่งเสียงปลุก โดยมีหน่วยเป็นมิลลิวินาทีหลัง Epoch (เช่น
Date.now() + n)
เมธอด
clear()
chrome.alarms.clear(
name?: string,
callback?: function,
): Promise<boolean>
ล้างการปลุกที่ระบุชื่อ
พารามิเตอร์
-
name
สตริง ไม่บังคับ
ชื่อของการปลุกที่จะล้าง ค่าเริ่มต้นจะเป็นสตริงที่ว่างเปล่า
-
callback
function ไม่บังคับ
พารามิเตอร์
callbackจะมีลักษณะดังนี้(wasCleared: boolean) => void
-
wasCleared
บูลีน
-
การคืนสินค้า
-
Promise<boolean>
Chrome 91 ขึ้นไประบบรองรับ Promise สำหรับ Manifest V3 ขึ้นไปเท่านั้น แพลตฟอร์มอื่นๆ ต้องใช้ Callback
clearAll()
chrome.alarms.clearAll(
callback?: function,
): Promise<boolean | undefined>
ล้างการตั้งปลุกทั้งหมด
พารามิเตอร์
-
callback
function ไม่บังคับ
พารามิเตอร์
callbackจะมีลักษณะดังนี้(wasCleared?: boolean) => void
-
wasCleared
บูลีน ไม่บังคับ
-
การคืนสินค้า
-
Promise<boolean | undefined>
Chrome 91 ขึ้นไประบบรองรับ Promise สำหรับ Manifest V3 ขึ้นไปเท่านั้น แพลตฟอร์มอื่นๆ ต้องใช้ Callback
create()
chrome.alarms.create(
name?: string,
alarmInfo: AlarmCreateInfo,
callback?: function,
): Promise<void>
สร้างการปลุก เมื่อใกล้ถึงเวลาที่ระบุโดย alarmInfo ระบบจะเริ่มเหตุการณ์ onAlarm หากมีการปลุกอื่นที่ใช้ชื่อเดียวกัน (หรือไม่มีชื่อหากไม่ได้ระบุไว้) ระบบจะยกเลิกการปลุกนั้นและแทนที่ด้วยการปลุกนี้
เพื่อลดภาระในเครื่องของผู้ใช้ Chrome จะจำกัดการปลุกให้ไม่เกิน 1 ครั้งต่อวินาที แต่อาจหน่วงเวลาการปลุกได้ตามต้องการ กล่าวคือ การตั้งค่า delayInMinutes หรือ periodInMinutes ให้น้อยกว่า 1 วินาทีจะไม่ได้รับการยอมรับและจะทำให้เกิดคำเตือน when สามารถตั้งค่าให้น้อยกว่า 1 วินาทีหลังจาก "ตอนนี้" ได้โดยไม่มีคำเตือน แต่จะไม่ทำให้สัญญาณเตือนดังขึ้นเป็นเวลาอย่างน้อย 1 วินาที
พารามิเตอร์
-
name
สตริง ไม่บังคับ
ชื่อที่ไม่บังคับเพื่อระบุการปลุกนี้ ค่าเริ่มต้นจะเป็นสตริงที่ว่างเปล่า
-
alarmInfo
อธิบายเวลาที่ควรส่งเสียงปลุก ต้องระบุเวลาเริ่มต้นด้วย
whenหรือdelayInMinutes(อย่างใดอย่างหนึ่ง) หากตั้งค่าperiodInMinutesไว้ สัญญาณเตือนจะดังซ้ำทุกๆperiodInMinutesนาทีหลังจากเหตุการณ์แรก หากไม่ได้ตั้งค่าwhenหรือdelayInMinutesสำหรับการปลุกซ้ำ ระบบจะใช้periodInMinutesเป็นค่าเริ่มต้นสำหรับdelayInMinutes -
callback
function ไม่บังคับ
Chrome 111 ขึ้นไปพารามิเตอร์
callbackจะมีลักษณะดังนี้() => void
การคืนสินค้า
-
Promise<void>
Chrome 111 ขึ้นไปPromise ที่จะได้รับการแก้ไขเมื่อสร้างการปลุกแล้ว
ระบบรองรับ Promise สำหรับ Manifest V3 ขึ้นไปเท่านั้น แพลตฟอร์มอื่นๆ ต้องใช้ Callback
get()
chrome.alarms.get(
name?: string,
callback?: function,
): Promise<Alarm | undefined>
เรียกดูรายละเอียดเกี่ยวกับการปลุกที่ระบุ
พารามิเตอร์
การคืนสินค้า
-
Promise<Alarm | undefined>
Chrome 91 ขึ้นไประบบรองรับ Promise สำหรับ Manifest V3 ขึ้นไปเท่านั้น แพลตฟอร์มอื่นๆ ต้องใช้ Callback
getAll()
chrome.alarms.getAll(
callback?: function,
): Promise<Alarm[]>
รับอาร์เรย์ของการปลุกทั้งหมด
พารามิเตอร์
การคืนสินค้า
-
Promise<Alarm[]>
Chrome 91 ขึ้นไประบบรองรับ Promise สำหรับ Manifest V3 ขึ้นไปเท่านั้น แพลตฟอร์มอื่นๆ ต้องใช้ Callback