From d520df89b74947d0684878396477e5a18701b024 Mon Sep 17 00:00:00 2001 From: ThinkStu <91378285+Bistutu@users.noreply.github.com> Date: Fri, 31 May 2024 09:03:58 +0800 Subject: [PATCH] =?UTF-8?q?opti:=20=E8=B0=83=E6=95=B4DOM=E8=AF=86=E5=88=AB?= =?UTF-8?q?=E7=AE=97=E6=B3=95=E9=A1=BA=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- entrypoints/main/compat.ts | 2 +- entrypoints/main/dom.ts | 22 +++++++++++----------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/entrypoints/main/compat.ts b/entrypoints/main/compat.ts index ecc6ba3..6496267 100644 --- a/entrypoints/main/compat.ts +++ b/entrypoints/main/compat.ts @@ -26,7 +26,7 @@ export const replaceCompatFn: ReplaceCompatFn = { ["youtube.com"]: (node: any, text: any) => { const doc = parser.parseFromString(text, 'text/html'); const newNode = doc.body.firstChild as HTMLElement; - node.innerHTML= newNode.innerHTML + node.innerHTML = newNode.innerHTML }, }; diff --git a/entrypoints/main/dom.ts b/entrypoints/main/dom.ts index a73aaab..4e97363 100644 --- a/entrypoints/main/dom.ts +++ b/entrypoints/main/dom.ts @@ -25,31 +25,31 @@ export function grabNode(node: any): any { return false; } - // 2、普通适配,遇到这些标签则直接翻译节点 + // 2、特殊适配,根据域名进行特殊处理 + let fn = selectCompatFn[getMainDomain(url.host)]; + if (fn) { + let rs = fn(node); + if (rs) return rs + } + + // 3、普通适配,遇到这些标签则直接翻译节点 if (directSet.has(curTag)) { return node; } - // 3、button 按钮适配 + // 4、button 按钮适配 if (curTag === 'button' || (curTag === 'span' && node.parentNode && node.parentNode.tagName.toLowerCase() === 'button')) { // 翻译按钮内部而不是整个按钮,避免按钮失去响应式点击事件 if (node.textContent.trim() !== '') handleBtnTranslation(node) return false; } - // 4、特殊适配,根据域名进行特殊处理 - let fn = selectCompatFn[getMainDomain(url.host)]; - if (fn) { - let rs = fn(node); - if (rs) return rs - } - - // 4、如果遇到 span,则首先该节点就符合翻译条件 + // 5、如果遇到 span,则首先该节点就符合翻译条件 if (curTag === "span" || node.nodeType === Node.TEXT_NODE || detectChildMeta(node)) { return grabNode(node.parentNode) || node; // 递归向上寻找最后一个符合的父节点 } - // 5、如果节点是div并且不符合一般翻译条件,可翻译首行文本 + // 6、如果节点是div并且不符合一般翻译条件,可翻译首行文本 if (curTag === 'div' || curTag === 'label') { // 遍历子节点,寻找首个文本节点或 a 标签节点 let child = node.firstChild;