JGY Front-end Dev Engineer
「创建博客」 「编辑」 「本文源码」

替换文本脚本

2023-11-06

// ==UserScript== // @name 替换多个文本 // @namespace https://viayoo.com/ // @version 0.1 // @description try to take over the world! // @author You // @run-at document-start // @match https:/// // @grant none // ==/UserScript==

var isReplacing = false; var replaceMap = new Map(); var originalTextMap = new Map();

function replaceTextInDocument(node) { if (node.nodeType === Node.TEXT_NODE) { if (!originalTextMap.has(node)) { originalTextMap.set(node, node.textContent); } if (isReplacing) { var newText = originalTextMap.get(node); replaceMap.forEach((replacement, original) => { newText = newText.replace(new RegExp(original, ‘g’), replacement); }); node.textContent = newText; } else { node.textContent = originalTextMap.get(node); } } else if (node.nodeType === Node.ELEMENT_NODE) { for (var i = 0; i < node.childNodes.length; i++) { replaceTextInDocument(node.childNodes[i]); } } }

function openReplaceDialog() { var replaceInput = prompt(‘请输入要替换的多个词组及其对应的替换内容,格式:原词组1=替换内容1, 原词组2=替换内容2, …’); if (replaceInput !== null) { replaceInput = replaceInput.trim(); if (replaceInput === ‘’) { return; } replaceMap.clear(); var replaces = replaceInput.split(‘,’); replaces.forEach((replace) => { var parts = replace.split(‘=’); if (parts.length === 2) { var original = parts[0].trim(); var replacement = parts[1].trim(); replaceMap.set(original, replacement); } }); isReplacing = true; replaceTextInDocument(document.body); } else { isReplacing = false; replaceTextInDocument(document.body); } }

function addButton(icon, f) { var button = document.createElement(‘button’); button.className = ‘button’; button.innerHTML = ‘替换文本’; button.style.position = ‘fixed’; button.style.top = ‘10px’; button.style.right = ‘10px’; button.addEventListener(‘click’, f); document.body.appendChild(button); }

addButton(‘https://common.cnblogs.com/images/copycode.gif’, openReplaceDialog);


如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

¥ 打赏博主

发布评论

Content