mirror of
https://github.com/mdn/webextensions-examples.git
synced 2026-04-16 06:18:35 +02:00
* Replace var with let in examples store-collected-images/webextension-plain/deps/uuidv4.js * Reverted third–party code
75 lines
2.0 KiB
JavaScript
75 lines
2.0 KiB
JavaScript
/*
|
|
DELAY is set to 6 seconds in this example. Such a short period is chosen to make
|
|
the extension's behavior more obvious, but this is not recommended in real life.
|
|
Note that in Chrome, alarms cannot be set for less than a minute. In Chrome:
|
|
|
|
* if you install this extension "unpacked", you'll see a warning
|
|
in the console, but the alarm will still go off after 6 seconds
|
|
* if you package the extension and install it, then the alarm will go off after
|
|
a minute.
|
|
*/
|
|
let DELAY = 0.1;
|
|
let CATGIFS = "https://giphy.com/explore/cat";
|
|
|
|
/*
|
|
Restart alarm for the currently active tab, whenever background.js is run.
|
|
*/
|
|
let gettingActiveTab = browser.tabs.query({active: true, currentWindow: true});
|
|
gettingActiveTab.then((tabs) => {
|
|
restartAlarm(tabs[0].id);
|
|
});
|
|
|
|
/*
|
|
Restart alarm for the currently active tab, whenever the user navigates.
|
|
*/
|
|
browser.tabs.onUpdated.addListener((tabId, changeInfo, tab) => {
|
|
if (!changeInfo.url) {
|
|
return;
|
|
}
|
|
let gettingActiveTab = browser.tabs.query({active: true, currentWindow: true});
|
|
gettingActiveTab.then((tabs) => {
|
|
if (tabId == tabs[0].id) {
|
|
restartAlarm(tabId);
|
|
}
|
|
});
|
|
});
|
|
|
|
/*
|
|
Restart alarm for the currently active tab, whenever a new tab becomes active.
|
|
*/
|
|
browser.tabs.onActivated.addListener((activeInfo) => {
|
|
restartAlarm(activeInfo.tabId);
|
|
});
|
|
|
|
/*
|
|
restartAlarm: clear all alarms,
|
|
then set a new alarm for the given tab.
|
|
*/
|
|
function restartAlarm(tabId) {
|
|
browser.pageAction.hide(tabId);
|
|
browser.alarms.clearAll();
|
|
let gettingTab = browser.tabs.get(tabId);
|
|
gettingTab.then((tab) => {
|
|
if (tab.url != CATGIFS) {
|
|
browser.alarms.create("", {delayInMinutes: DELAY});
|
|
}
|
|
});
|
|
}
|
|
|
|
/*
|
|
On alarm, show the page action.
|
|
*/
|
|
browser.alarms.onAlarm.addListener((alarm) => {
|
|
let gettingActiveTab = browser.tabs.query({active: true, currentWindow: true});
|
|
gettingActiveTab.then((tabs) => {
|
|
browser.pageAction.show(tabs[0].id);
|
|
});
|
|
});
|
|
|
|
/*
|
|
On page action click, navigate the corresponding tab to the cat gifs.
|
|
*/
|
|
browser.pageAction.onClicked.addListener(() => {
|
|
browser.tabs.update({url: CATGIFS});
|
|
});
|