-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbackground.js
59 lines (56 loc) · 1.55 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
'use strict';
/* cache */
const cache = {};
chrome.tabs.onRemoved.addListener(tabId => delete cache[tabId]);
chrome.runtime.onMessage.addListener((request, sender, response) => {
if (request.method === 'find') {
chrome.tabs.update(request.tabId, {
active: true
});
chrome.windows.update(request.windowId, {
focused: true
});
chrome.storage.local.get({
strict: false
}, prefs => {
if (request.snippet && (request.snippet.indexOf('<b>') !== -1 || prefs.strict)) {
cache[request.tabId] = request;
chrome.scripting.executeScript({
target: {
tabId: request.tabId,
allFrames: true
},
files: ['data/highlight.js']
}, () => chrome.runtime.lastError);
}
response();
});
}
else if (request.method === 'get') {
response(cache[sender.tab.id]);
cache[sender.tab.id];
}
});
/* action to open popup */
chrome.action.onClicked.addListener(tab => chrome.tabs.create({
url: `data/popup/index.html?mode=tab`,
index: tab.index + 1
}));
{
const startup = () => chrome.storage.local.get({
'open-mode': 'popup'
}, prefs => {
chrome.action.setPopup({
popup: prefs['open-mode'] === 'popup' ? 'data/popup/index.html' : ''
});
});
chrome.runtime.onStartup.addListener(startup);
chrome.runtime.onInstalled.addListener(startup);
}
chrome.storage.onChanged.addListener(ps => {
if (ps['open-mode']) {
chrome.action.setPopup({
popup: ps['open-mode'].newValue === 'popup' ? 'data/popup/index.html' : ''
});
}
});