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}
/>
+
+