fix: skip builtin ignore selector when autoscan disabled

This commit is contained in:
Gabe
2025-10-31 00:22:26 +08:00
parent 7343db78a5
commit 635e588bcc
3 changed files with 17 additions and 4 deletions

View File

@@ -224,6 +224,11 @@ const RULES_MAP = {
rootsSelector: `ytd-page-manager`, rootsSelector: `ytd-page-manager`,
ignoreSelector: `aside, button, footer, form, header, pre, mark, nav, #player, #container, .caption-window, .ytp-settings-menu`, ignoreSelector: `aside, button, footer, form, header, pre, mark, nav, #player, #container, .caption-window, .ytp-settings-menu`,
}, },
"web.telegram.org": {
autoScan: `false`,
selector: ".text-content, .embedded-text-wrapper",
rootsSelector: ".Transition",
},
}; };
export const BUILTIN_RULES = Object.entries(RULES_MAP).map( export const BUILTIN_RULES = Object.entries(RULES_MAP).map(

View File

@@ -261,13 +261,17 @@ export class Translator {
} }
// 内置忽略元素 // 内置忽略元素
static KISS_IGNORE_SELECTOR = `${APP_LCNAME}, .kiss-caption-container, .kiss-subtitle-controls
#${APP_CONSTS.fabID}, .${APP_CONSTS.fabID}_warpper,
#${APP_CONSTS.boxID}, .${APP_CONSTS.boxID}_warpper,
#${APP_CONSTS.popupID}, .${APP_CONSTS.popupID}_warpper`;
static BUILTIN_IGNORE_SELECTOR = `address, area, audio, br, canvas, static BUILTIN_IGNORE_SELECTOR = `address, area, audio, br, canvas,
data, datalist, embed, head, iframe, input, noscript, map, data, datalist, embed, head, iframe, input, noscript, map,
object, option, param, picture, progress, object, option, param, picture, progress,
select, script, style, track, textarea, template, select, script, style, track, textarea, template,
video, wbr, .notranslate, [contenteditable], [translate='no'], video, wbr, .notranslate, [contenteditable], [translate='no'],
${APP_LCNAME}, #${APP_CONSTS.fabID}, #${APP_CONSTS.boxID}, ${Translator.KISS_IGNORE_SELECTOR}`;
.${APP_CONSTS.fabID}_warpper, .${APP_CONSTS.boxID}_warpper`;
#setting; // 设置选项 #setting; // 设置选项
#rule; // 规则 #rule; // 规则
@@ -314,6 +318,10 @@ export class Translator {
// 忽略元素 // 忽略元素
get #ignoreSelector() { get #ignoreSelector() {
if (this.#rule.autoScan === "false") {
return `${Translator.KISS_IGNORE_SELECTOR}, ${this.#rule.ignoreSelector}`;
}
return `${Translator.BUILTIN_IGNORE_SELECTOR}, ${this.#rule.ignoreSelector}`; return `${Translator.BUILTIN_IGNORE_SELECTOR}, ${this.#rule.ignoreSelector}`;
} }

View File

@@ -165,14 +165,14 @@ class YouTubeCaptionProvider {
this.#ytControls = ytControls; this.#ytControls = ytControls;
const kissControls = document.createElement("div"); const kissControls = document.createElement("div");
kissControls.className = "kiss-bilingual-subtitle-controls"; kissControls.className = "notranslate kiss-subtitle-controls";
Object.assign(kissControls.style, { Object.assign(kissControls.style, {
height: "100%", height: "100%",
}); });
const toggleButton = document.createElement("button"); const toggleButton = document.createElement("button");
toggleButton.className = toggleButton.className =
"ytp-button notranslate kiss-bilingual-subtitle-button"; "ytp-button kiss-subtitle-button";
toggleButton.title = APP_NAME; toggleButton.title = APP_NAME;
Object.assign(toggleButton.style, { Object.assign(toggleButton.style, {
color: "white", color: "white",