-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbackground.js
100 lines (78 loc) · 3.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
89
90
91
92
93
94
95
96
97
98
99
// 初期化
let context = 'all'; // コンテキストの初期値を設定(全体を対象)
let title = chrome.runtime.getManifest().name; // 拡張機能の名前をmanifest.jsonから取得
let isEnabled = false; // ツールの有効状態を示すフラグ(初期値はfalse)
// 拡張機能がインストールされたときに実行される処理
chrome.runtime.onInstalled.addListener(() => {
// 現在の有効状態をストレージに保存
chrome.storage.local.set({ isEnabled: isEnabled });
// コンテキストメニューを作成
chrome.contextMenus.create({
title: `${title}${isEnabled ? '無効にする' : '有効にする'}`, // 有効/無効に応じたタイトルを設定
contexts: [context], // コンテキストメニューを表示するコンテキスト
id: "Sample" // メニュー項目のID
});
});
// ストレージの値が変更されたときに実行される処理
chrome.storage.onChanged.addListener((changes) => {
// 'isEnabled'の変更があった場合
if (changes.isEnabled) {
// 新しい値を取得し、未設定の場合は既存の'isEnabled'を保持
isEnabled = changes.isEnabled.newValue;
}
updateContextMenu(); // コンテキストメニューを更新
});
// コンテキストメニューの項目がクリックされたときに実行される処理
chrome.contextMenus.onClicked.addListener((info) => {
// クリックされたメニュー項目が"Sample"である場合
if (info.menuItemId === "Sample") {
// 有効状態を反転
isEnabled = !isEnabled;
// 現在の状態をログに出力(デバッグ用)
// console.log(`現在の状態: ${isEnabled ? 'ON' : 'OFF'}`);
// 新しい有効状態をストレージに保存
chrome.storage.local.set({ isEnabled: isEnabled });
updateContextMenu(); // コンテキストメニューを更新
}
});
// メッセージを受信したときに実行される処理
chrome.runtime.onMessage.addListener((msg) => {
// メッセージにkeyEnabledが含まれている場合
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'を保持
isEnabled = data.isEnabled !== undefined ? data.isEnabled : isEnabled;
// ページがリロードされたことをログに出力(デバッグ用)
// console.log("ページがリロードされました。", `現在の状態: ${isEnabled ? 'ON' : 'OFF'}`);
updateContextMenu(); // コンテキストメニューを更新
});
}
});
// コンテキストメニューを更新する関数
function updateContextMenu() {
// 既存の"Sample"メニュー項目を削除
chrome.contextMenus.remove("Sample", () => {
// 削除が成功した場合に新しいメニュー項目を作成
if (!chrome.runtime.lastError) {
chrome.contextMenus.create({
title: `${title}${isEnabled ? '無効にする' : '有効にする'}`, // 有効/無効に応じたタイトルを設定
contexts: [context], // メニューを表示するコンテキスト
id: "Sample" // メニュー項目のID
});
}
});
}