diff --git a/src/config/i18n.js b/src/config/i18n.js index 5ed7ab9..86ea45c 100644 --- a/src/config/i18n.js +++ b/src/config/i18n.js @@ -167,6 +167,10 @@ export const I18N = { zh: `请求间隔时间 (0-5000ms)`, en: `Request Interval (0-5000ms)`, }, + translate_interval: { + zh: `翻译间隔时间 (100-5000ms)`, + en: `Translate Interval (100-5000ms)`, + }, min_translate_length: { zh: `最小翻译长度 (1-100)`, en: `Min Translate Length (1-100)`, diff --git a/src/libs/translator.js b/src/libs/translator.js index 6863f7b..ca00a24 100644 --- a/src/libs/translator.js +++ b/src/libs/translator.js @@ -430,10 +430,13 @@ export class Translator { _reTranslate = debounce(() => { if (this._rule.transOpen === "true") { + window.removeEventListener("keydown", this._handleKeydown); + this._mutaObserver.disconnect(); + this._interseObserver.disconnect(); this._removeInjector(); this._register(); } - }, 500); + }, this._setting.transInterval); _invalidLength = (q) => !q || diff --git a/src/views/Options/Setting.js b/src/views/Options/Setting.js index d75dfa9..822cb6b 100644 --- a/src/views/Options/Setting.js +++ b/src/views/Options/Setting.js @@ -52,6 +52,9 @@ export default function Settings() { case "fetchInterval": value = limitNumber(value, 0, 5000); break; + case "transInterval": + value = limitNumber(value, 100, 5000); + break; case "minLength": value = limitNumber(value, 1, 100); break; @@ -94,6 +97,7 @@ export default function Settings() { contextMenuType = 1, touchTranslate = 2, blacklist = DEFAULT_BLACKLIST.join(",\n"), + transInterval = 500, } = setting; const { isHide = false } = fab || {}; @@ -134,6 +138,15 @@ export default function Settings() { onChange={handleChange} /> + +