四种实现剪贴板的操作
     
    
- 
      原生
document.execCommand()
方法 - 异步的 Clipboard API
 - 
      
copy
事件和
paste
事件 - 
      第三方库
clipboard.js
 
     前三个的详细内容可以查阅阮一峰老师的
     
      剪贴板操作 Clipboard API 教程
     
     。我们来看看第四种使用 clipboard.js 库简化原生操作。
    
     第三方库 Clipboard.js
    
首先,在我们的项目中使用 NPM 引入 clipboard:
$ npm i clipboard
或者使用 CDN:
<script src="https://cdn.jsdelivr.net/npm/clipboard@2.0.10/dist/clipboard.min.js"></script>
     
      Clipboard.js
     
     的文档已经很全面了,以下是一些简单的实例。
    
     复制文本
    
     通过
     
      data-clipboard-target
     
     绑定相对应的 id 进行匹配:
    
<!-- Target -->
<input id="foo" value="https://github.com/zenorocha/clipboard.js.git">
<!-- Trigger -->
<button class="btn" data-clipboard-target="#foo">
  <img src="assets/clippy.svg" alt="Copy to clipboard">
</button>
     更简便的方法是,使用
     
      data-clipboard-text
     
     属性设置您想包含的内容即可。
    
<button class="btn" data-clipboard-text="Copy to Clipboard"></button>
     剪切文本
    
     定义
     
      data-clipboard-action
     
     属性,以指定是要
     
      copy
     
     还是
     
      cut
     
     内容。
    
<button class="btn" data-clipboard-action="cut" data-clipboard-target="#foo">
  Cut to clipboard
</button>
注意:
cut
操作仅适用于
<input>
或
<textarea>
元素。
     事件
    
     
      success
     
     和
     
      error
     
     让您监听和实现您的自定义逻辑。
    
const clipboard = new ClipboardJS('.btn')
clipboard.on('success', e => {
  console.info('Action:', e.action)
  console.info('Text:', e.text)
  console.info('Trigger:', e.trigger)
  e.clearSelection()
})
clipboard.on('error', e => {
  console.error('Action:', e.action)
  console.error('Trigger:', e.trigger)
})
     还有一些
     
      高级选项
     
     ,详细见文档。
    
     示例:添加著作权
    
我们在很多知识分享平台都可以看到,当我们复制一段超过一定字数的内容时,会在您复制的内容最后追加上一段标注:
作者:xxx
链接:xxx
来源:xxx
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。`
     我们使用
     
      copy
     
     事件来实现(这里不对复制多少字数做判断):
    
document.addEventListener('copy', e => {
  const selection = document.getSelection()
  const ct = `作者:lio
链接:https://www.jianshu.com
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。`
  e.clipboardData.setData('text/plain', selection.toString() + '\n' + ct)
  e.preventDefault()
})
复制这段代码到控制台,试着随意复制一段文本到其他地方。
尝试着,使用其他以上所讲述的任何方法,来修改这个示例,以加深印象。
     更多资料