Greasy Fork is available in English.
文本选中复制通用版本,适用于大多数网站
- // ==UserScript==// @name 🔥🔥🔥文本选中复制(通用)🔥🔥🔥// @name:en Text Copy Universal// @name:zh 🔥🔥🔥文本选中复制(通用)🔥🔥🔥// @description 文本选中复制通用版本,适用于大多数网站// @description:en Text copy general version, suitable for most websites.// @description:zh 文本选中复制通用版本,适用于大多数网站// @namespace https://github.com/WindrunnerMax/TKScript// @version 1.1.3// @author Czy// @match http://*/*// @match https://*/*// @supportURL https://github.com/WindrunnerMax/TKScript/issues// @license GPL License// @run-at document-end// @grant GM_registerMenuCommand// @grant GM_unregisterMenuCommand// @grant GM_notification// ==/UserScript==(function () {'use strict';function styleInject(css, ref) {if ( ref === void 0 ) ref = {};var insertAt = ref.insertAt;if (!css || typeof document === 'undefined') { return; }var head = document.head || document.getElementsByTagName('head')[0];var style = document.createElement('style');style.type = 'text/css';if (insertAt === 'top') {if (head.firstChild) {head.insertBefore(style, head.firstChild);} else {head.appendChild(style);}} else {head.appendChild(style);}if (style.styleSheet) {style.styleSheet.cssText = css;} else {style.appendChild(document.createTextNode(css));}}var css_248z = ".__copy-currency-container{background-color:#4c98f7;border-radius:3px;bottom:0;display:flex;flex-direction:column;left:-150px;position:fixed;transition:all .3s;width:150px;z-index:9999999999}.__copy-currency-container:before{background-color:#4c98f7;border-radius:20px;content:\"\";cursor:pointer;height:20px;position:absolute;right:-6px;top:calc(50% - 10px);width:20px}.__copy-currency-container:hover{left:0}.__copy-currency-container>.__copy-currency-button{border:1px solid #fff;border-radius:3px;color:#fff!important;cursor:pointer;font-size:12px!important;margin:5px;padding:5px 3px 5px 4px;text-align:center;user-select:none;z-index:9999999999}";styleInject(css_248z);const STORAGE_VALUE = {OPEN: "true",CLOSE: "false"};var BUTTON_STATUS = /* @__PURE__ */ ((BUTTON_STATUS2) => {BUTTON_STATUS2[BUTTON_STATUS2["OPEN"] = 0] = "OPEN";BUTTON_STATUS2[BUTTON_STATUS2["CLOSE"] = 1] = "CLOSE";return BUTTON_STATUS2;})(BUTTON_STATUS || {});const STORAGE_KEY_PREFIX = "copy-currency--";const register = (controllers) => {const container = document.createElement("div");container.className = "__copy-currency-container";document.body.appendChild(container);controllers.forEach((controller) => {const button = document.createElement("div");button.className = "__copy-currency-button";const localHookInfo = localStorage.getItem(STORAGE_KEY_PREFIX + controller.storageKey);controller.status = localHookInfo === STORAGE_VALUE.OPEN ? 1 /* CLOSE */ : 0 /* OPEN */;const handler = () => {if (controller.status === 1 /* CLOSE */) {controller.openFunction();controller.status = 0 /* OPEN */;button.textContent = controller.closeName;localStorage.setItem(STORAGE_KEY_PREFIX + controller.storageKey, STORAGE_VALUE.OPEN);} else {controller.closeFunction();controller.status = 1 /* CLOSE */;button.textContent = controller.openName;localStorage.setItem(STORAGE_KEY_PREFIX + controller.storageKey, STORAGE_VALUE.CLOSE);}};handler();button.addEventListener("click", handler);container.appendChild(button);});};const styles = {insertCSS: (id, css) => {const style = document.createElement("style");style.id = id;style.innerText = css;const [body] = document.getElementsByTagName("body");if (body) {body.appendChild(style);} else {window.addEventListener("DOMContentLoaded", () => document.body.appendChild(style));}},removeCSS: (id) => {const style = document.getElementById(id);style && style.remove();}};const stopNativePropagation = (event) => event.stopPropagation();const CONTROLLER_MAP = [{status: BUTTON_STATUS.CLOSE,storageKey: "selectstart-and-copy",openName: "✅ 启动解除复制限制",closeName: "❌ 关闭解除复制限制",openFunction: () => {window.addEventListener("selectstart", stopNativePropagation, true);window.addEventListener("copy", stopNativePropagation, true);styles.insertCSS(STORAGE_KEY_PREFIX + "selectstart-and-copy","*{user-select: auto !important;-webkit-user-select: auto !important;}");},closeFunction: () => {window.removeEventListener("selectstart", stopNativePropagation, true);window.removeEventListener("copy", stopNativePropagation, true);styles.removeCSS(STORAGE_KEY_PREFIX + "selectstart-and-copy");}},{status: BUTTON_STATUS.CLOSE,storageKey: "contextmenu",openName: "✅ 启动解除右键限制",closeName: "❌ 关闭解除右键限制",openFunction: () => window.addEventListener("contextmenu", stopNativePropagation, true),closeFunction: () => window.removeEventListener("contextmenu", stopNativePropagation, true)},{status: BUTTON_STATUS.CLOSE,storageKey: "keydown",openName: "✅ 启动解除键盘限制",closeName: "❌ 关闭解除键盘限制",openFunction: () => window.addEventListener("keydown", stopNativePropagation, true),closeFunction: () => window.removeEventListener("keydown", stopNativePropagation, true)}];(function() {register(CONTROLLER_MAP);})();}());