Chrome瀏覽器擴充套件程式通過chrome.alarms.* API,可以制定計劃週期性地執行程式碼,或在指定時間執行程式碼。
要使用chrome.alarms.* API,首先需要在manifest.json檔案中宣告alarms授權如下:
{
"permissions": [
"alarms"
],
}
chrome.alarms.Alarm物件的屬性如下:
屬性名 |
型別 |
必選/可選 |
註釋 |
name |
string |
必選 |
alarm的名字 |
scheduledTime |
double |
必選 |
觸發alarm的時間,單位ms |
periodInMinutes |
double |
可選 |
非null表示alarm週期性執行的時間間隔,單位minute |
chrome.alarms API中的常用方法:
· 建立一個alarm
chrome.alarms.create(string name, object alarmInfo)
這是一個同步方法,name屬性可選,為空時表示””。alarmInfo物件的屬性如下:
屬性名 |
型別 |
必選/可選 |
註釋 |
when |
double |
可選 |
觸發alarm的時間,單位ms |
delayInMinutes |
double |
可選 |
onAlarm事件發出的延遲時間,單位minute |
periodInMinutes |
double |
可選 |
非null表示alarm週期性執行的時間間隔,單位minute |
在alarmInfo指定的時間建立一個新的alarm,同時發出onAlarm事件。如果已經有重名的alarm則替換已有的alarm。
為了降低建立alarm對執行效率的影響,Chrome瀏覽器限制一分鐘內最多隻能有一個alarm,任何可能突破該限制的alarm都將被推遲任意時間。當然除錯過程中沒有該限制。
· 獲取指定名字的alarm
chrome.alarms.get(string name, function(Alarm alarm) {...})
· 獲取所有alarm
chrome.alarms.getAll(function(array of Alarm alarms) {...})
· 通過名字刪除alarm
chrome.alarms.clear(string name, function(boolean wasCleared) {...})
· 清除所有alarm
chrome.alarms.clearAll(function(boolean wasCleared) {...})
· 監聽alarm發生的事件,用於event page
chrome.alarms.onAlarm.addListener(function(Alarm alarm) {...})
回撥函式中的alarm就是觸發事件的alarm物件。