-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbackground.js
89 lines (72 loc) · 2.79 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
86
87
88
// 初期化
let context = 'all';
let title = "選択&カスタム検索: ";
let isEnabled = false;
// 拡張機能がインストールされたときに実行される処理
chrome.runtime.onInstalled.addListener(() => {
chrome.contextMenus.create({
title: `${title}${isEnabled ? 'OFFにする' : 'ONにする'}`,
contexts: [context],
id: "Sample"
});
});
// ストレージの値が変更されたときに実行される処理
chrome.storage.onChanged.addListener((changes) => {
if (changes.isEnabled) {
isEnabled = changes.isEnabled.newValue;
}
updateContextMenu();
});
// コンテキストメニューの項目がクリックされたときに実行される処理
chrome.contextMenus.onClicked.addListener((info) => {
if (info.menuItemId === "Sample") {
isEnabled = !isEnabled;
// console.log(`現在の状態: ${isEnabled ? 'ON' : 'OFF'}`);
chrome.storage.local.set({ isEnabled: isEnabled });
updateContextMenu();
}
});
// メッセージを受信したときに実行される処理
chrome.runtime.onMessage.addListener((msg) => {
if (msg.keyEnabled) {
isEnabled = !isEnabled;
// console.log(`現在の状態: ${isEnabled ? 'ON' : 'OFF'}`);
chrome.storage.local.set({ isEnabled: isEnabled });
updateContextMenu();
}
});
// タブが更新されたときに実行される処理
chrome.tabs.onUpdated.addListener((tabId, changeInfo) => {
if (changeInfo.status === 'complete') {
// ストレージから'isEnabled'の値を取得
chrome.storage.local.get('isEnabled', (data) => {
isEnabled = data.isEnabled !== undefined ? data.isEnabled : isEnabled;
// ページがリロードされたことをログに出力(デバッグ用)
// console.log("ページがリロードされました。", `現在の状態: ${isEnabled ? 'ON' : 'OFF'}`);
updateContextMenu();
});
}
});
// コンテキストメニューを更新する関数
function updateContextMenu() {
chrome.contextMenus.remove("Sample", () => {
if (!chrome.runtime.lastError) {
chrome.contextMenus.create({
title: `${title}${isEnabled ? 'OFFにする' : 'ONにする'}`,
contexts: [context],
id: "Sample"
});
}
});
}
chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
if (message.action === 'createWindow') {
chrome.windows.create({ url: message.url }, (newWindow) => {
// console.log(`新しいウィンドウが作成されました。ウィンドウID: ${newWindow.id}`);
});
} else if (message.action === 'createIncognitoWindow') {
chrome.windows.create({ url: message.url, incognito: true }, (newWindow) => {
// console.log(`シークレットモードで新しいウィンドウが作成されました。ウィンドウID: ${newWindow.id}`);
});
}
});