如何实现点击指定网站文本时自动选中并复制至剪贴板?
修复Tampermonkey脚本实现点击复制功能
原脚本存在几个关键问题导致复制失效,以下是修复后的完整方案:
问题根源
- 仅绑定了首个匹配元素的点击事件,页面内多个目标元素无法触发复制
GM_setClipboard需要脚本头部声明授权,原脚本@grant none导致API无法调用- 页面内容可能动态加载,直接获取元素会遗漏后续生成的节点
修复后的脚本
// ==UserScript== // @name IATE 点击复制翻译文本 // @namespace http://tampermonkey.net/ // @version 0.2 // @description 点击IATE网站的翻译文本自动复制到剪贴板 // @author You // @match https://iate.europa.eu/* // @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw== // @grant GM_setClipboard // ==/UserScript== (function() { 'use strict'; // 添加CSS实现点击全选+光标提示 const style = document.createElement('style'); style.textContent = ` app-iate-search-term-refine { user-select: all !important; cursor: copy; } `; document.head.appendChild(style); // 事件委托处理所有(含动态生成)目标元素 document.addEventListener('click', function(e) { const target = e.target.closest('app-iate-search-term-refine'); if (target) { const text = target.textContent.trim(); if (text) { GM_setClipboard(text); // 可选:添加复制成功提示 alert('文本已复制:' + text); } } }); })();
核心修复点
- 声明
@grant GM_setClipboard:Tampermonkey需明确授权才能调用剪贴板API - 事件委托:通过监听全局点击事件,自动匹配所有目标元素(包括后续动态生成的)
- 文本优化:用
trim()去除冗余空白,保证复制内容整洁 - 视觉提示:添加复制光标样式,可选弹窗反馈复制结果
内容的提问来源于stack exchange,提问作者greektranslator
相关产品推荐
相关产品推荐

