您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
左键选中
// ==UserScript== // @name 左键选中复制 // @description 左键选中 // @version 1.3 // @match *://*/* // @grant unsafeWindow // @run-at document-body // @namespace https://greasyfork.org/users/12375 // ==/UserScript== (function(uw) { 'use strict'; const CTRL_A_MASK = 0b10000001; // 复合位掩码 const KEY_STATES = new Uint8Array(256); const CLIP_WRITE = uw.navigator.clipboard?.writeText ? t => uw.navigator.clipboard.writeText(t).catch(()=>GM_setClipboard(t)) : t => GM_setClipboard(t); let textCache = null, tid = 0; const memReadSelection = () => { const s = document.getSelection(); return s && s.toString() || ''; }; uw.addEventListener('keydown', e => KEY_STATES[e.keyCode] = e.ctrlKey | (e.keyCode === 65) << 7); uw.addEventListener('keyup', () => KEY_STATES.fill(0)); document.addEventListener('selectionchange', () => { if (KEY_STATES[65] & CTRL_A_MASK) return; const txt = memReadSelection(); if (!txt || txt === textCache) return; textCache = txt; clearTimeout(tid); tid = setTimeout(() => CLIP_WRITE(txt), 8); }, 0x7FFFFFFF); })(unsafeWindow);