5

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
  };
}());
4

1 に答える 1

3

コードで気付いた問題に遭遇した可能性があります。約 4 か月前に発生した変更により、現在表示されている動作が発生した可能性があることがわかりました。11 月にこれを見たことを考えると、おそらく開発チャンネルまたはカナリア チャンネルを使用していたでしょう。

お手数をおかけして申し訳ありません。これをできるだけ早く修正し、より広範なチャネルに統合する可能性があります。

于 2014-01-16T23:11:10.703 に答える