From fb2b517a674d65ab1c0cad316a5113cf4ceb9269 Mon Sep 17 00:00:00 2001 From: Gabe Yuan Date: Mon, 16 Oct 2023 15:48:53 +0800 Subject: [PATCH] add webfix: FIXER_BN --- src/libs/webfix.js | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/libs/webfix.js b/src/libs/webfix.js index 6433921..d7c2858 100644 --- a/src/libs/webfix.js +++ b/src/libs/webfix.js @@ -6,6 +6,7 @@ import { apiFetch } from "../apis"; * 修复程序类型 */ const FIXER_BR = "br"; +const FIXER_BN = "bn"; const FIXER_FONTSIZE = "fontSize"; /** @@ -34,6 +35,12 @@ const DEFAULT_SITES = [ rootSelector: "", fixer: FIXER_FONTSIZE, }, + { + pattern: "chat.openai.com", + selector: "div[data-testid^=conversation-turn] .items-start > div", + rootSelector: "", + fixer: FIXER_BN, + }, ]; /** @@ -94,6 +101,26 @@ function brFixer(node) { node.innerHTML = html; } +/** + * 目标是将 `\n` 替换成 `p` + * @param {*} node + * @returns + */ +function bnFixer(node) { + if (node.hasAttribute(fixedSign)) { + return; + } + node.setAttribute(fixedSign, "true"); + + const childs = node.childNodes; + if (childs.length === 1 && childs[0].nodeName === "#text") { + node.innerHTML = node.innerHTML + .split("\n") + .map((item) => `

${item || " "}

`) + .join(""); + } +} + /** * 修复字体大小问题,如 baidu.com * @param {*} node @@ -107,6 +134,7 @@ function fontSizeFixer(node) { */ const fixerMap = { [FIXER_BR]: brFixer, + [FIXER_BN]: bnFixer, [FIXER_FONTSIZE]: fontSizeFixer, }; @@ -134,6 +162,7 @@ function run(selector, fixer, rootSelector) { rootNode.querySelectorAll(selector).forEach(fixer); mutaObserver.observe(rootNode, { childList: true, + subtree: true, }); }); }