How to use chrome.alarms for Google Chrome extension

dom-events, google-chrome-extension, javascript

Solution

Here is the simplest working example I can think of, warning it is very annoying as when the alarm is on it alerts "Beep" every 12 seconds. It uses a popup browser action to switch the alarm on and off.

manifest.json

{
  "manifest_version": 2,

  "name": "Alarm test",
  "description": "This extension alarms.",
  "version": "1.0",

  "permissions": [
    "alarms"
  ],

  "background": {
    "scripts": ["eventPage.js"],
    "persistent": false
  },

  "browser_action": {
    "default_icon": "icon.png",
    "default_popup": "popup.html"
  }
}

popup.html

<!doctype html>
<html>
<head>
<title>Alarms Popup</title>

<script src="popup.js"></script>
</head>
<body>
<a href="" id="alarmOn">ON</a>
<a href="" id="alarmOff">OFF</a>
</ul>
</body>
</html>

popup.js

var alarmClock = {

        onHandler : function(e) {
            chrome.alarms.create("myAlarm", {delayInMinutes: 0.1, periodInMinutes: 0.2} );
                    window.close();
        },

        offHandler : function(e) {
            chrome.alarms.clear("myAlarm");
                    window.close();
        },

        setup: function() {
            var a = document.getElementById('alarmOn');
            a.addEventListener('click',  alarmClock.onHandler );
            var a = document.getElementById('alarmOff');
            a.addEventListener('click',  alarmClock.offHandler );
        }
};

document.addEventListener('DOMContentLoaded', function () {
    alarmClock.setup();
});

And the important bit in eventPage.js

chrome.alarms.onAlarm.addListener(function(alarm) {
  alert("Beep");
});

Problem

manifest.json ``` { "manifest_version": 2, "name": "App name", "description": "Description goes here", "version": "1.0", "background": { "scripts": ["background.js"] }, "permissions": [ "tabs", "alarms" ], "browser_action": { "default_icon": "icon.png", "default_popup": "popup.html" } } ``` I trying to create a function to make a popup "great" every minute like this: ``` chrome.alarms.onAlarm.addListener(function(){ alert('great'); }); ``` Could someone please tell why is it not triggering that alert. I check the console, no error was displayed.

Original source