SCBao/content.js

35 lines
1.2 KiB
JavaScript

// 替換文字的函數
function replaceText(node, replacements) {
if (node.nodeType === Node.TEXT_NODE) {
let text = node.nodeValue;
for (let [key, value] of Object.entries(replacements)) {
const regex = new RegExp(key, "g");
text = text.replace(regex, value);
}
node.nodeValue = text;
} else if (node.nodeType === Node.ELEMENT_NODE) {
node.childNodes.forEach((child) => replaceText(child, replacements));
}
}
// 初始化替換
function initializeReplacements() {
chrome.storage.local.get("replacements", (data) => {
const replacements = data.replacements || {};
replaceText(document.body, replacements);
// 監控動態內容
const observer = new MutationObserver((mutations) => {
mutations.forEach((mutation) => {
mutation.addedNodes.forEach((node) => {
if (node.nodeType === Node.ELEMENT_NODE || node.nodeType === Node.TEXT_NODE) {
replaceText(node, replacements);
}
});
});
});
observer.observe(document.body, { childList: true, subtree: true });
});
}
initializeReplacements();