浏览器允许 JavaScript 脚本读写剪贴板,自动复制或粘贴内容。主要是用来操作文本、图片
有三种方式可操作剪切板
- Document.execCommand() 【此API已从W3C标准中删除】
- Clipboard API (推荐)
- 事件监听 copy、paste、cut
1、Docement.execCommand
它支持复制、粘贴、剪切三个操作
1 | document.execCommand('copy')(复制) |
通用页面布局,引用了layui
1 | // 页面 |
操作示例:
1 | // 获取元素 |
封装将内容复制到剪切板
1 | const copyToClipboard = str => { |
它只能将选中的内容复制到剪贴板,无法向剪贴板任意写入内容。
其次,它是同步操作,如果复制/粘贴大量数据,页面会出现卡顿。有些浏览器还会跳出提示框,要求用户许可,这时在用户做出选择前,页面会失去响应。
为了解决这些问题,浏览器厂商提出了异步的 Clipboard API
2、异步 Clipboard API
Clipboard API 是下一代的剪贴板操作方法,比传统的
document.execCommand()
方法更强大、更合理。它的所有操作都是异步的,返回 Promise 对象,不会造成页面卡顿。而且,它可以将任意内容(比如图片)放入剪贴板。
1 | //Clipboard 对象提供了四个方法 |
操作示例:
1 | const clipboardObj = navigator.clipboard; |
直接在代码中执行剪切板操作可能会报错,建议放在事件监听的回调函数中。
需要注意的是,脚本读取的总是当前页面的剪贴板。这带来的一个问题是,如果把相关的代码粘贴到开发者工具中直接运行,可能会报错,因为这时的当前页面是开发者工具的窗口,而不是网页页面。
3、监听 剪切板操作事件
通过监听事件可以阻止用户的 默认操作, 实现 禁止 复制粘贴等功能
操作示例:
1 | # 禁止粘贴 |
本文借鉴了 阮一峰大佬的 帖子
- 本文作者: 王不留行
- 本文链接: https://wyf195075595.github.io/2022/06/28/programming/htmlcss/剪切板操作/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!