2026-01-22 13:43:59 +08:00

50 lines
1.5 KiB
JavaScript

// 页面加载时读取存储的配置
document.addEventListener('DOMContentLoaded', () => {
chrome.storage.sync.get(['aiConfig', 'voiceEnabled'], (result) => {
const config = result.aiConfig || {};
document.getElementById('apiUrl').value = config.apiUrl || DEFAULT_URL;
document.getElementById('apiKey').value = config.apiKey || "";
document.getElementById('modelName').value = config.modelName || DEFAULT_MODEL;
// 语音开关状态(默认为关闭)
document.getElementById('voiceEnabled').checked = result.voiceEnabled || false;
});
});
// 保存逻辑
document.getElementById('save').addEventListener('click', () => {
const config = {
apiUrl: document.getElementById('apiUrl').value.trim() || DEFAULT_URL,
apiKey: document.getElementById('apiKey').value.trim(),
modelName: document.getElementById('modelName').value.trim() || DEFAULT_MODEL
};
const isVoiceEnabled = document.getElementById('voiceEnabled').checked;
// 验证 API Key 是否填写
if (!config.apiKey) {
showStatus("请输入 API Key", "#f56c6c");
return;
}
// 存储到 chrome.storage.sync
chrome.storage.sync.set({
aiConfig: config,
voiceEnabled: isVoiceEnabled
}, () => {
showStatus("✅ 配置已保存,刷新页面生效", "#67c23a");
});
});
function showStatus(text, color) {
const status = document.getElementById('status');
status.textContent = text;
status.style.color = color;
// 3秒后清除提示
setTimeout(() => {
status.textContent = '';
}, 3000);
}