From fd7c663282fc5c4e3c53d8ddba5765b817ea4f68 Mon Sep 17 00:00:00 2001 From: Gabe Date: Thu, 6 Nov 2025 23:33:49 +0800 Subject: [PATCH] feat: Restore CSS injection functionality --- src/config/i18n.js | 6 +++--- src/config/rules.js | 2 +- src/libs/rules.js | 6 +++--- src/libs/translator.js | 13 ++++++++++++- src/views/Options/Rules.js | 6 +++--- 5 files changed, 22 insertions(+), 11 deletions(-) diff --git a/src/config/i18n.js b/src/config/i18n.js index 42181bf..209d905 100644 --- a/src/config/i18n.js +++ b/src/config/i18n.js @@ -804,9 +804,9 @@ export const I18N = { zh_TW: `注入 CSS`, }, inject_css_helper: { - zh: `初始化时注入运行,一个页面仅运行一次。`, - en: `Injected and run at initialization, and only run once per page.`, - zh_TW: `初始化時注入運行,一個頁面僅運行一次。`, + zh: `预加载时注入,一个页面仅运行一次。`, + en: `Injected during preload, runs only once per page.`, + zh_TW: `預先載入時注入,一個頁面僅運行一次。`, }, fixer_function: { zh: `修复函数`, diff --git a/src/config/rules.js b/src/config/rules.js index d7c3b64..0cc92b6 100644 --- a/src/config/rules.js +++ b/src/config/rules.js @@ -112,7 +112,7 @@ export const GLOBLA_RULE = { parentStyle: DEFAULT_SELECT_STYLE, // 选择器父节点样式 grandStyle: DEFAULT_SELECT_STYLE, // 选择器祖节点样式 injectJs: "", // 注入JS - // injectCss: "", // 注入CSS(作废) + injectCss: "", // 注入CSS transOnly: "false", // 是否仅显示译文 // transTiming: OPT_TIMING_PAGESCROLL, // 翻译时机/鼠标悬停翻译 (暂时作废) transTag: DEFAULT_TRANS_TAG, // 译文元素标签 diff --git a/src/libs/rules.js b/src/libs/rules.js index b3561c9..bc2a5e8 100644 --- a/src/libs/rules.js +++ b/src/libs/rules.js @@ -58,7 +58,7 @@ export const matchRule = async (href, { injectRules, subrulesList }) => { "parentStyle", "grandStyle", "injectJs", - // "injectCss", + "injectCss", "transStartHook", "transEndHook", // "transRemoveHook", @@ -138,7 +138,7 @@ export const checkRules = (rules) => { parentStyle, grandStyle, injectJs, - // injectCss, + injectCss, apiSlug, fromLang, toLang, @@ -171,7 +171,7 @@ export const checkRules = (rules) => { parentStyle: type(parentStyle) === "string" ? parentStyle : "", grandStyle: type(grandStyle) === "string" ? grandStyle : "", injectJs: type(injectJs) === "string" ? injectJs : "", - // injectCss: type(injectCss) === "string" ? injectCss : "", + injectCss: type(injectCss) === "string" ? injectCss : "", apiSlug: type(apiSlug) === "string" && apiSlug.trim() !== "" ? apiSlug.trim() diff --git a/src/libs/translator.js b/src/libs/translator.js index 595b308..bf988d4 100644 --- a/src/libs/translator.js +++ b/src/libs/translator.js @@ -13,6 +13,7 @@ import { OPT_SPLIT_PARAGRAPH_PUNCTUATION, OPT_SPLIT_PARAGRAPH_DISABLE, OPT_SPLIT_PARAGRAPH_TEXTLENGTH, + MSG_INJECT_CSS, } from "../config"; import { interpreter } from "./interpreter"; import { clearFetchPool } from "./pool"; @@ -26,6 +27,9 @@ import { shortcutRegister } from "./shortcut"; import { tryDetectLang } from "./detect"; import { trustedTypesHelper } from "./trustedTypes"; import { injectJs, INJECTOR } from "../injectors"; +import { injectInternalCss } from "./injector"; +import { isExt } from "./client"; +import { sendBgMsg } from "./msg"; /** * @class Translator @@ -1624,7 +1628,14 @@ export class Translator { // injectCss && injectInternalCss(injectCss); // } - const { injectJs, toLang } = this.#rule; + const { injectJs, injectCss, toLang } = this.#rule; + + if (isExt) { + injectCss && sendBgMsg(MSG_INJECT_CSS, injectCss); + } else { + injectCss && injectInternalCss(injectCss); + } + if (injectJs?.trim()) { const apiSetting = { ...this.#apiSetting }; const docInfo = { ...this.#docInfo }; diff --git a/src/views/Options/Rules.js b/src/views/Options/Rules.js index ded7674..59dfb4b 100644 --- a/src/views/Options/Rules.js +++ b/src/views/Options/Rules.js @@ -106,7 +106,7 @@ function RuleFields({ rule, rules, setShow, setKeyword }) { parentStyle = "", grandStyle = "", injectJs = "", - // injectCss = "", + injectCss = "", apiSlug, fromLang, toLang, @@ -651,7 +651,7 @@ function RuleFields({ rule, rules, setShow, setKeyword }) { maxRows={10} /> */} - {/* */} + />