按住Alt,选中文字,然后模糊
// ==UserScript==
// @name 打码文字
// @version 0.1.2
// @description 按住Alt,选中文字,然后模糊
// @author People11
// @match *://*/*
// @namespace https://greasyfork.org/users/1143233
// ==/UserScript==
(function() {
'use strict';
const style = {
filter: 'blur(9px)',
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 && window.getSelection().containsNode(node, true)) {
wrapTextWithSpan(node, 0, node.nodeValue.length, style);
} else if (node.nodeType === Node.ELEMENT_NODE) {
Array.from(node.childNodes).forEach(childNode => {
if (window.getSelection().containsNode(childNode, true)) {
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 => {
processNode(childNode, style);
});
}
selection.removeAllRanges();
}
}
};
})();