JavaScript剪贴板交互主要通过Clipboard API实现,需用户手势触发且要求HTTPS;writeText()和readText()用于纯文本读写,返回Promise;富文本或图片需用write()/read()配合ClipboardItem;现代浏览器广泛支持但存在兼容性差异。
JavaScript 中的剪贴板交互现在主要通过 Clipboard API 实现,它比旧的 document.execCommand('copy') 更安全、更可控,且无需依赖输入框或选中内容。核心是 navigator.clipboard 对象,但需注意权限和使用场景。
调用 navigator.clipboard.writeText() 即可写入纯文本。该方法返回 Promise,成功则无返回值,失败会抛出错误。
localhost 也允许)使用 navigator.clipboard.readText() 获取当前剪贴板文本内容,同样返回 Promise。
e rejectionwriteText() 和 readText() 只处理纯文本。如需复制 HTML、图片等,需用更底层的 write() 和 read() 方法。
write() 接收一个 ClipboardItem 数组,每个项可包含多种 MIME 类型数据(如 'text/html'、'image/png') 导出),再构造 ClipboardItem
types 并调用 getType() 获取对应 BlobClipboard API 在现代浏览器中已广泛支持(Chrome 66+、Firefox 63+、Edge 79+、Safari 16.4+),但仍有细节差异:
read() 的限制较严,建议优先使用 readText() 并降级处理if ('clipboard' in navigator)
execCommand 作为 fallback(需临时创建 并选中)