-
Notifications
You must be signed in to change notification settings - Fork 0
/
background.js
85 lines (70 loc) · 2.65 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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
/* global chrome */
/* global chrome */
var url = "blank.html";
var bDebug = false;
function deb(message) { if (bDebug) console.log(message); }
function createTabInWindow(window) {
deb('createTabInWindow');
if (window.type === "normal") {
chrome.tabs.create({ "windowId": window.id, "index": 0, "url": url, "active": false, "pinned": true }, function (tab) {
deb('pin tab erstellt');
});
}
}
function isFirstTabOurs(window) {
deb('isFirstTabOurs');
var regex = "^chrome-extension\:\/\/.+blank\.html$";
var regExpr = new RegExp(regex);
if (typeof window.tabs != 'undefined' && window.tabs[0].url.search(regExpr) != -1) {
return true;
}
return false;
}
function firstStart(windows) {
deb('firststart');
var index;
for (index = 0; index < windows.length; ++index) {
if (!isFirstTabOurs(windows[index])) createTabInWindow(windows[index]);
}
}
function additionalCheck(windows) {
deb('additionalCheck');
var index;
for (index = 0; index < windows.length; ++index) {
if (!isFirstTabOurs(windows[index])) createTabInWindow(windows[index]);
// Falls kein normales TAB mehr da ist, ein neues leeres erzeugen
if (windows[index].type === "normal" && windows[index].tabs.length == 1) {
chrome.tabs.create({ "windowId": windows[index].id, "index": 1, "active": true });
}
}
}
function tabRemoved(tabId, removeInfo) {
deb('tabRemoved');
if (removeInfo.isWindowClosing === false) chrome.windows.getAll({ populate: true }, additionalCheck);
}
function tabDetached(tabId, detachInfo) {
deb('tabDetached');
chrome.windows.getAll({ populate: true }, additionalCheck);
}
function tabActivated(activeInfo) {
deb('tabActivated');
if (typeof activeInfo.windowId != 'undefined') chrome.windows.get(activeInfo.windowId, { "populate": true },
function (window) {
if (window.tabs[0].active === true) {
if (window.tabs.length >= 2) chrome.tabs.update(window.tabs[1].id, { active: true, highlighted: true, selected: true });
}
});
}
// add listeners
chrome.tabs.onRemoved.addListener(tabRemoved);
chrome.tabs.onDetached.addListener(tabDetached);
chrome.tabs.onActivated.addListener(tabActivated);
chrome.windows.onCreated.addListener(createTabInWindow);
// create windows when chrome or extension is started
chrome.windows.getAll({ populate: true }, firstStart);
deb('start');
// Aktuellen TAB active machen
chrome.windows.getCurrent({ populate: true, windowTypes: ["normal"] }, function (window) {
chrome.tabs.update(window.tabs[1].id, { active: true });
deb('tab2 active gemacht');
});