diff --git a/src/config/i18n.js b/src/config/i18n.js index 749f883..74284b5 100644 --- a/src/config/i18n.js +++ b/src/config/i18n.js @@ -1397,4 +1397,9 @@ export const I18N = { en: `If you do not fully understand the default prompt, please do not modify it at will, otherwise the translation may fail.`, zh_TW: `在未完全理解預設Prompt的情況下,請勿隨意修改,否則可能翻譯失敗。`, }, + if_pre_init: { + zh: `是否预初始化`, + en: `Whether to pre-initialize`, + zh_TW: `是否預初始化`, + }, }; diff --git a/src/config/setting.js b/src/config/setting.js index 8f98f0a..a29c747 100644 --- a/src/config/setting.js +++ b/src/config/setting.js @@ -109,7 +109,7 @@ export const DEFAULT_SUBRULES_LIST = [ }, ]; -export const DEFAULT_MOUSEHOVER_KEY = ["ControlLeft"]; +export const DEFAULT_MOUSEHOVER_KEY = ["KeyQ"]; export const DEFAULT_MOUSE_HOVER_SETTING = { useMouseHover: true, // 是否启用鼠标悬停翻译 mouseHoverKey: DEFAULT_MOUSEHOVER_KEY, // 鼠标悬停翻译组合键 @@ -148,4 +148,5 @@ export const DEFAULT_SETTING = { transInterval: 100, // 翻译等待时间 langDetector: OPT_TRANS_MICROSOFT, // 远程语言识别服务 mouseHoverSetting: DEFAULT_MOUSE_HOVER_SETTING, // 鼠标悬停翻译 + preInit: true, // 是否预加载脚本 }; diff --git a/src/hooks/Storage.js b/src/hooks/Storage.js index 165e789..dbf8bd5 100644 --- a/src/hooks/Storage.js +++ b/src/hooks/Storage.js @@ -53,9 +53,9 @@ export function useStorage(key, defaultVal = null, syncKey = "") { // 远端同步 const runSync = useCallback(async (keyToSync, valueToSync) => { try { - const { value, isNew } = await syncData(keyToSync, valueToSync); - if (isNew) { - setData(value); + const res = await syncData(keyToSync, valueToSync); + if (res?.isNew) { + setData(res.value); } } catch (error) { kissLog("Sync failed", keyToSync); diff --git a/src/libs/sync.js b/src/libs/sync.js index f6b6cbf..88751fc 100644 --- a/src/libs/sync.js +++ b/src/libs/sync.js @@ -70,7 +70,8 @@ export const syncData = async (key, value) => { syncMeta = {}, } = await getSyncWithDefault(); if (!syncUrl || !syncKey || (syncType === OPT_SYNCTYPE_WEBDAV && !syncUser)) { - throw new Error("sync args err"); + // throw new Error("sync args err"); + return; } let { updateAt = 0, syncAt = 0 } = syncMeta[key] || {}; diff --git a/src/libs/translator.js b/src/libs/translator.js index ee648d9..67b5bcc 100644 --- a/src/libs/translator.js +++ b/src/libs/translator.js @@ -325,13 +325,19 @@ export class Translator { this.#enableMouseHover(); } - // 是否默认启动 + if (document.readyState === "loading") { + document.addEventListener("DOMContentLoaded", () => this.#run()); + } else { + this.#run(); + } + } + + // 启动 + #run() { if (this.#rule.transOpen === "true") { - if (document.readyState === "loading") { - document.addEventListener("DOMContentLoaded", () => this.enable()); - } else { - this.enable(); - } + this.enable(); + } else if (this.#setting.preInit) { + this.#init(); } } @@ -1242,13 +1248,17 @@ export class Translator { // 注入JS/CSS #initInjector() { - const { injectJs, injectCss } = this.#rule; - if (isExt) { - injectJs && sendBgMsg(MSG_INJECT_JS, injectJs); - injectCss && sendBgMsg(MSG_INJECT_CSS, injectCss); - } else { - injectJs && injectInlineJs(injectJs); - injectCss && injectInternalCss(injectCss); + try { + const { injectJs, injectCss } = this.#rule; + if (isExt) { + injectJs && sendBgMsg(MSG_INJECT_JS, injectJs); + injectCss && sendBgMsg(MSG_INJECT_CSS, injectCss); + } else { + injectJs && injectInlineJs(injectJs); + injectCss && injectInternalCss(injectCss); + } + } catch (err) { + kissLog("inject js"); } } diff --git a/src/views/Options/Apis.js b/src/views/Options/Apis.js index fd100d4..d1e80df 100644 --- a/src/views/Options/Apis.js +++ b/src/views/Options/Apis.js @@ -282,7 +282,7 @@ function ApiFields({ apiSlug, isUserApi, deleteApi }) { <> - + {/* todo: 改成 ReusableAutocomplete 可选择和填写模型 */} - + - + - + - + @@ -485,7 +485,7 @@ function ApiFields({ apiSlug, isUserApi, deleteApi }) { {API_SPE_TYPES.batch.has(api.apiType) && ( - + {i18n("enable")} - + - + - + - + {" "} {i18n("enable")} - + {" "} - + - + - + - + - +