Repository navigation
Expand file tree
/
Copy pathoptions.js
More file actions
108 lines (96 loc) · 4.01 KB
/
Copy pathoptions.js
File metadata and controls
108 lines (96 loc) · 4.01 KB
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
100
101
102
103
104
105
106
107
108
document.addEventListener('DOMContentLoaded', function() {
const defaults = {
targetLang: 'zh', sourceLang: 'auto', triggerMode: 'auto',
showIcon: true, autoPlay: false, theme: 'light',
engines: ['google'], // 默认启用Google
engineConfigs: {},
enableHistory: true,
enableHover: true, hoverDelay: 300
};
// 所有可用引擎
const availableEngines = [
'google', 'mymemory', 'libre', // 免费
'baidu', 'youdao', 'tencent', 'aliyun', 'microsoft',
'deepl', 'openai', 'silicon', 'volcengine' // 需密钥
];
function loadSettings() {
chrome.storage.sync.get(defaults, function(result) {
document.getElementById('targetLang').value = result.targetLang;
document.getElementById('sourceLang').value = result.sourceLang;
document.getElementById('showIcon').checked = result.showIcon;
document.getElementById('autoPlay').checked = result.autoPlay;
document.getElementById('enableHistory').checked = result.enableHistory;
document.getElementById('enableHover').checked = result.enableHover;
document.getElementById('hoverDelay').value = result.hoverDelay;
document.querySelectorAll('input[name="triggerMode"]').forEach(r => {
r.checked = r.value === result.triggerMode;
});
document.querySelectorAll('input[name="theme"]').forEach(r => {
r.checked = r.value === result.theme;
});
// 加载引擎选择
const engines = result.engines || ['google'];
document.querySelectorAll('input[name="engine"]').forEach(cb => {
cb.checked = engines.includes(cb.value);
// 显示/隐藏配置区域
const configDiv = document.querySelector(`.engine-config[data-engine="${cb.value}"]`);
if (configDiv) {
configDiv.classList.toggle('active', cb.checked);
}
});
// 加载引擎配置
const engineConfigs = result.engineConfigs || {};
Object.keys(engineConfigs).forEach(key => {
const input = document.querySelector(`.api-input[data-key="${key}"]`);
if (input) input.value = engineConfigs[key];
});
});
}
function saveSettings() {
// 收集选中的引擎
const selectedEngines = [];
document.querySelectorAll('input[name="engine"]:checked').forEach(cb => {
selectedEngines.push(cb.value);
});
// 收集引擎配置
const engineConfigs = {};
document.querySelectorAll('.api-input').forEach(input => {
if (input.value) {
engineConfigs[input.dataset.key] = input.value;
}
});
const settings = {
targetLang: document.getElementById('targetLang').value,
sourceLang: document.getElementById('sourceLang').value,
triggerMode: document.querySelector('input[name="triggerMode"]:checked').value,
theme: document.querySelector('input[name="theme"]:checked').value,
showIcon: document.getElementById('showIcon').checked,
autoPlay: document.getElementById('autoPlay').checked,
enableHistory: document.getElementById('enableHistory').checked,
enableHover: document.getElementById('enableHover').checked,
hoverDelay: parseInt(document.getElementById('hoverDelay').value) || 300,
engines: selectedEngines.length > 0 ? selectedEngines : ['google'],
engineConfigs: engineConfigs
};
chrome.storage.sync.set(settings, function() {
showToast('设置已保存');
});
}
function showToast(msg) {
const t = document.getElementById('toast');
t.textContent = msg;
t.classList.add('show');
setTimeout(() => t.classList.remove('show'), 2000);
}
// 引擎选择切换时显示/隐藏配置区域
document.querySelectorAll('input[name="engine"]').forEach(cb => {
cb.addEventListener('change', function() {
const configDiv = document.querySelector(`.engine-config[data-engine="${this.value}"]`);
if (configDiv) {
configDiv.classList.toggle('active', this.checked);
}
});
});
loadSettings();
document.getElementById('saveBtn').addEventListener('click', saveSettings);
});