您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Automatically copy selected text to clipboard and keep the selection
当前为
// ==UserScript== // @name Auto Copy Selected Text // @namespace http://tampermonkey.net/ // @version 1.4 // @description Automatically copy selected text to clipboard and keep the selection // @author liuweiqing // @match *://*/* // @grant none // @license MIT // @icon https://icons.iconarchive.com/icons/gartoon-team/gartoon-places/256/user-desktop-icon.png // ==/UserScript== (function () { ("use strict"); // 监听鼠标松开的事件 document.addEventListener("mouseup", () => { const selection = window.getSelection(); const selectedText = selection.toString(); if (selectedText) { const range = selection.getRangeAt(0); if (navigator.clipboard) { navigator.clipboard .writeText(selectedText) .then(() => { console.log("Text copied to clipboard:", selectedText); }) .catch((err) => { console.error("Failed to copy text to clipboard", err); }); } else { const tempElement = document.createElement("textarea"); tempElement.value = selectedText; document.body.appendChild(tempElement); tempElement.select(); try { document.execCommand("copy"); console.log("Text copied to clipboard:", selectedText); } catch (err) { console.error("Failed to copy text to clipboard", err); } document.body.removeChild(tempElement); } selection.removeAllRanges(); selection.addRange(range); } }); // 监听鼠标中键点击事件,粘贴剪贴板内容 document.addEventListener("mousedown", async (event) => { if (event.button === 1) { // 中键点击 event.preventDefault(); event.stopPropagation(); try { const text = await navigator.clipboard.readText(); // 获取点击位置的元素 const targetElement = document.elementFromPoint( event.clientX, event.clientY ); if (targetElement && isEditable(targetElement)) { // 设置焦点并模拟正常输入 forceFocus(targetElement); pasteIntoInput(targetElement, text); } else { // 如果不是输入框,则尝试插入到其他可编辑区域 document.execCommand("insertText", false, text); } } catch (err) { console.error("Failed to read clipboard contents: ", err); } } }); // 检查元素是否可编辑 function isEditable(element) { return ( element.tagName === "INPUT" || element.tagName === "TEXTAREA" || element.isContentEditable ); } // 尝试强制获得焦点 function forceFocus(element) { try { element.focus(); // 尝试直接聚焦 // 如果还没有焦点,再尝试更强制的方式 if (document.activeElement !== element) { const focusEvent = new FocusEvent("focus", { bubbles: true, cancelable: true, }); element.dispatchEvent(focusEvent); } } catch (e) { console.error("Failed to focus on element: ", e); } } // 模拟正常输入 function pasteIntoInput(element, text) { // 如果支持 `execCommand` if (document.execCommand) { element.focus(); document.execCommand("insertText", false, text); } else { // 如果不支持 `execCommand`,直接使用事件 const inputEvent = new InputEvent("input", { bubbles: true, cancelable: true, data: text, inputType: "insertText", }); element.dispatchEvent(inputEvent); } } })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址