如何在Node.js脚本中获取剪贴板数据?
独立JS脚本同步读取剪贴板实现
非浏览器环境的独立JS脚本(Node.js运行时,自动化测试脚本通用)无法调用浏览器navigator.clipboard API,可通过调用操作系统原生剪贴板能力实现你需要的同步getClipboardData方法,零依赖跨平台版本代码如下:
const { execSync } = require('child_process'); const os = require('os'); function getClipboardData() { const currentPlatform = os.platform(); let execCommand; switch (currentPlatform) { case 'win32': // Windows 调用PowerShell读剪贴板,指定UTF8编码避免中文乱码 execCommand = 'powershell -command "[Console]::OutputEncoding = [System.Text.Encoding]::UTF8; Get-Clipboard -Raw"'; break; case 'darwin': // macOS 自带pbpaste命令读剪贴板 execCommand = 'pbpaste'; break; case 'linux': // Linux 调用xclip读剪贴板,未预装的话可通过apt/yum/dnf安装 execCommand = 'xclip -selection clipboard -o'; break; default: throw new Error(`当前运行系统${currentPlatform}不支持剪贴板读取`); } try { // 同步执行命令返回文本,自动去除末尾多余换行 return execSync(execCommand, { encoding: 'utf8', stdio: ['ignore', 'pipe', 'ignore'] // 忽略无关错误输出 }).trimEnd(); } catch (e) { console.error('剪贴板读取失败:', e.message); return ''; } }
调用方式完全匹配你的需求:
let data = getClipboardData(); console.log(data);
注意事项
- Linux环境运行如果提示找不到xclip,执行对应包管理器安装即可:Debian/Ubuntu系执行
sudo apt install xclip,Fedora/RHEL系执行sudo dnf install xclip,工具体积极小无额外依赖 - 上述实现默认读取文本格式剪贴板内容,如果需要验证图片、文件等特殊格式复制逻辑,需要对应调整系统命令的解析规则
- 如果不想自行维护跨平台兼容逻辑,也可以使用轻量封装的npm包
clipboardy,安装后仅需几行代码即可实现相同能力:
// 先执行 npm i clipboardy 安装依赖 const clipboardy = require('clipboardy'); function getClipboardData() { return clipboardy.readSync(); }
内容的提问来源于stack exchange,提问作者Akshay Bistagond
相关产品推荐
相关产品推荐

