fix: simplify keepSelector logic

This commit is contained in:
Gabe Yuan
2024-05-30 17:18:39 +08:00
parent 72ccfc8aec
commit 0bfa5256b8
3 changed files with 35 additions and 41 deletions

View File

@@ -427,8 +427,8 @@ export const I18N = {
en: `Keep unchanged selector`, en: `Keep unchanged selector`,
}, },
keep_selector_helper: { keep_selector_helper: {
zh: `1、遵循CSS选择器语法。2、子元素选择器用“>>>”隔开。`, zh: `1、遵循CSS选择器语法。`,
en: `1. Follow CSS selector syntax. 2. Sub-element selectors are separated by ">>>".`, en: `1. Follow CSS selector syntax.`,
}, },
terms: { terms: {
zh: `专业术语`, zh: `专业术语`,

View File

@@ -53,7 +53,7 @@ export class Translator {
]; ];
_eventName = genEventName(); _eventName = genEventName();
_mouseoverNode = null; _mouseoverNode = null;
_keepSelector = [null, null]; _keepSelector = "";
_terms = []; _terms = [];
_docTitle = ""; _docTitle = "";
@@ -125,9 +125,7 @@ export class Translator {
this._setting = setting; this._setting = setting;
this._rule = rule; this._rule = rule;
this._keepSelector = (rule.keepSelector || "") this._keepSelector = rule.keepSelector || "";
.split(SHADOW_KEY)
.map((item) => item.trim());
this._terms = (rule.terms || "") this._terms = (rule.terms || "")
.split(/\n|;/) .split(/\n|;/)
.map((item) => item.split(",").map((item) => item.trim())) .map((item) => item.split(",").map((item) => item.trim()))
@@ -507,15 +505,11 @@ export class Translator {
} }
// 保留元素 // 保留元素
const [matchSelector, subSelector] = this._keepSelector; const keepSelector = this._keepSelector.trim();
if (matchSelector || subSelector) { if (keepSelector) {
let text = ""; let text = "";
el.childNodes.forEach((child) => { el.childNodes.forEach((child) => {
if ( if (child.nodeType === 1 && child.matches(keepSelector)) {
child.nodeType === 1 &&
((matchSelector && child.matches(matchSelector)) ||
(subSelector && child.querySelector(subSelector)))
) {
if (child.nodeName === "IMG") { if (child.nodeName === "IMG") {
child.style.cssText += `width: ${child.width}px;`; child.style.cssText += `width: ${child.width}px;`;
child.style.cssText += `height: ${child.height}px;`; child.style.cssText += `height: ${child.height}px;`;

View File

@@ -432,6 +432,34 @@ function RuleFields({ rule, rules, setShow, setKeyword }) {
</Grid> </Grid>
</Box> </Box>
<TextField
size="small"
label={i18n("fixer_selector")}
name="fixerSelector"
value={fixerSelector}
disabled={disabled}
onChange={handleChange}
multiline
maxRows={10}
/>
<TextField
select
size="small"
name="fixerFunc"
value={fixerFunc}
label={i18n("fixer_function")}
helperText={i18n("fixer_function_helper")}
disabled={disabled}
onChange={handleChange}
>
{GlobalItem}
{FIXER_ALL.map((item) => (
<MenuItem key={item} value={item}>
{item}
</MenuItem>
))}
</TextField>
<TextField <TextField
select select
size="small" size="small"
@@ -464,34 +492,6 @@ function RuleFields({ rule, rules, setShow, setKeyword }) {
maxRows={10} maxRows={10}
/> />
<TextField
size="small"
label={i18n("fixer_selector")}
name="fixerSelector"
value={fixerSelector}
disabled={disabled}
onChange={handleChange}
multiline
maxRows={10}
/>
<TextField
select
size="small"
name="fixerFunc"
value={fixerFunc}
label={i18n("fixer_function")}
helperText={i18n("fixer_function_helper")}
disabled={disabled}
onChange={handleChange}
>
{GlobalItem}
{FIXER_ALL.map((item) => (
<MenuItem key={item} value={item}>
{item}
</MenuItem>
))}
</TextField>
<TextField <TextField
size="small" size="small"
label={i18n("translate_start_hook")} label={i18n("translate_start_hook")}