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對象。