-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbackground.js
53 lines (50 loc) · 1.91 KB
/
background.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
chrome.browserAction.onClicked.addListener(function () {
chrome.tabs.query({active: true, currentWindow: true}, function (tabs) {
var tab = tabs[0];
chrome.tabs.executeScript(tab.id, {file: "jquery.min.js"}, function () {
chrome.tabs.executeScript(tab.id, {file: "getVillages.js"});
});
});
});
chrome.runtime.onMessage.addListener(function (message, sender) {
if(message.name == "GotVillages") {
console.log(message);
var urls = message.data.urls;
console.log(urls);
var promisesArray = [];
for(var i = 0; i < urls.length; i++) {
var url = urls[i];
chrome.tabs.create({url: url}, function (tab) {
var resolver;
var promise = new Promise(function (resolve, reject) {
resolver = function (units) {
resolve(units);
};
});
promises[tab.id] = {
promise: promise,
resolver: resolver
};
promisesArray.push(promise);
if(i + 1 == urls.length) {
console.log(promisesArray);
$.when.apply($, promisesArray).then(function () {
console.log(arguments);
});
}
});
}
}
if(message.name == "GotUnits" && "object" == typeof promises[sender.tab.id]) {
var units = message.data.units;
chrome.tabs.remove(sender.tab.id, function () {
promises[sender.tab.id].resolver(units);
});
}
});
chrome.tabs.onUpdated.addListener(function (tabID, changeInfo, tab) {
if("object" == typeof promises[tabID] && changeInfo.status == "complete") {
chrome.tabs.executeScript(tabID, {file: "getUnits.js"});
}
});
var promises = {};