35 lines
1.2 KiB
JavaScript
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(); |