Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to use chrome.alarms for Google Chrome extension

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.

like image 481
lomse Avatar asked Jul 18 '13 15:07

lomse


People also ask

How to set alarm in google chrome?

With Alarm Clock, just set alarm times, choose a MP3 or Radio to use, and hit Set Alarms. When the alarm triggers, you'll hear your music, bell sound that you set.

Is there an alarm on Chromebook?

Believe it or not, you can actually use your Chromebook to set alarms, timers, and even to get your bedtime schedule up to snuff in the same way that you would use your Android phone.


2 Answers

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");
});
like image 118
Salix alba Avatar answered Sep 30 '22 17:09

Salix alba


You didn't create any alarm, so no onAlarm event will be fired.

Create an alarm with chrome.alarms.create. Note: you should do it in the chrome.runtime.onInstalled event.

like image 25
方 觉 Avatar answered Sep 30 '22 19:09

方 觉