// ==UserScript== // @name 打码文字 // @version 0.1.1 // @description 按住Alt,选中文字,然后模糊 // @author People11 // @match *://*/* // @namespace https://greasyfork.org/users/1143233 // @downloadURL none // ==/UserScript== (function() { 'use strict'; const style = { filter: 'blur(6px)', userSelect: 'none' }; function wrapTextWithSpan(textNode, start, end, style) { const span = document.createElement('span'); Object.assign(span.style, style); const range = document.createRange(); range.setStart(textNode, start); range.setEnd(textNode, end); range.surroundContents(span); } function processNode(node, style) { if (node.nodeType === Node.TEXT_NODE) { wrapTextWithSpan(node, 0, node.nodeValue.length, style); } else if (node.nodeType === Node.ELEMENT_NODE) { Array.from(node.childNodes).forEach(childNode => processNode(childNode, style)); } } document.onmouseup = (event) => { if (event.altKey) { const selection = window.getSelection(); if (!selection.isCollapsed) { const range = selection.getRangeAt(0); const commonAncestorContainer = range.commonAncestorContainer; if (commonAncestorContainer.nodeType === Node.TEXT_NODE) { wrapTextWithSpan(commonAncestorContainer, range.startOffset, range.endOffset, style); } else if (commonAncestorContainer.nodeType === Node.ELEMENT_NODE) { Array.from(commonAncestorContainer.childNodes).forEach(childNode => { if (selection.containsNode(childNode, true)) { processNode(childNode, style); } }); } selection.removeAllRanges(); } } }; })();