diff --git a/src/config/i18n.js b/src/config/i18n.js index a0f58b2..28ef30b 100644 --- a/src/config/i18n.js +++ b/src/config/i18n.js @@ -392,8 +392,8 @@ export const I18N = { en: `Keep unchanged selector`, }, keep_selector_helper: { - zh: `1、遵循CSS选择器语法。2、留空表示采用全局设置。`, - en: `1. Follow CSS selector syntax. 2. Leave blank to adopt the global setting.`, + zh: `1、遵循CSS选择器语法。2、留空表示采用全局设置。3、子元素选择器用“>>>”隔开。`, + en: `1. Follow CSS selector syntax. 2. Leave blank to adopt the global setting. 3.Sub-element selectors are separated by ">>>".`, }, root_selector: { zh: `根选择器`, diff --git a/src/libs/translator.js b/src/libs/translator.js index 6e2903a..a723cc8 100644 --- a/src/libs/translator.js +++ b/src/libs/translator.js @@ -396,10 +396,15 @@ export class Translator { const keepSelector = this._rule.keepSelector || ""; const keeps = []; - if (keepSelector.trim()) { + const [matchSelector, subSelector] = keepSelector.split(SHADOW_KEY); + if (matchSelector.trim() || subSelector?.trim()) { let text = ""; el.childNodes.forEach((child) => { - if (child.nodeType === 1 && child.matches(keepSelector)) { + if ( + child.nodeType === 1 && + ((matchSelector.trim() && child.matches(matchSelector)) || + (subSelector?.trim() && child.querySelector(subSelector))) + ) { if (child.nodeName === "IMG") { child.style.cssText += `width: ${child.width}px;`; child.style.cssText += `height: ${child.height}px;`; diff --git a/src/libs/webfix.js b/src/libs/webfix.js index 5cfe2c6..e9a8be5 100644 --- a/src/libs/webfix.js +++ b/src/libs/webfix.js @@ -99,8 +99,8 @@ function brFixer(node, tag = "p") { html += `${child.outerHTML}<${tag} class="kiss-p">`; } else if (child.outerHTML) { html += child.outerHTML; - } else if (child.nodeValue) { - html += child.nodeValue; + } else if (child.textContent) { + html += child.textContent; } if (index === node.childNodes.length - 1) {