chrome.alarms を使用する必要がある Chrome 拡張機能に取り組んでいます。問題は、アラームがトリガーされていないか、非常に一貫性のない動作でトリガーされていることです。
拡張機能は、マニフェスト v2で推奨されているように、イベント ページ内に存在するオブジェクトに基づいて構築されます。また、拡張機能にタブイベントがあり、イベントページを起動することがあります。
実際に約n分ごとにトリガーされるchrome.alarmを作成するのを手伝ってください。または、私が間違っていることを説明するか、代替案を提案してください。
以下に、関連するコードを示します。
マニフェスト.json
{
"manifest_version": 2,
"browser_action": {
"default_popup": "index.html"
},
"permissions": [
"<all_urls>",
"storage",
"tabs",
"alarms"
],
"background": {
"scripts": [
"js/backend/monitor.js",
"js/backend/bootstrap.js"
],
"persistent": false
}
}
ブートストラップ.js
// Exaggerating with the validation on purpose
chrome.alarms.get('timeToSendToApi', function(alarm) {
if (typeof alarm === 'undefined' || alarm.name !== 'timeToSendToApi') {
chrome.alarms.create('timeToSendToApi', {periodInMinutes: 2});
}
});
Main.monitor.start();
モニター.js
Main.monitor = (function() {
function send() {
// Do stuff
}
function tabUpdatedHandler(tabId, changeInfo, tab) {
// Do stuff
}
function tabActivatedHandler(activeInfo) {
// Do stuff
}
function focusLost() {
// Do stuff
}
function start(callback) {
chrome.tabs.onUpdated.addListener( tabUpdatedHandler );
chrome.tabs.onActivated.addListener( tabActivatedHandler );
chrome.windows.onFocusChanged.addListener( focusLost );
chrome.alarms.onAlarm.addListener(function(alarm) {
if(alarm.name === 'timeToSendToApi') {
send();
}
});
}
return {
start: start
};
}());