clipboard.js-实现复制功能的插件

本文介绍了clipboard.js,一个用于复制文本的现代JavaScript插件,并详细讲解了如何在一般场景及Vue项目中使用。在Vue项目中,推荐使用vue-clipboard2,介绍了其安装及在main.js中的引入方法。提供了相关插件和库的官方及GitLab链接,供进一步学习参考。
摘要由CSDN通过智能技术生成

clipboard是一款现代化的拷贝文字的插件。
一、在一般的使用:
1、引入js文件

<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script>

2、使用

//1、
new ClipboardJS('.btn');

//2、
//data-clipboard-target 属性:可实现从另一个元素复制内容,能匹配到另一个元素的选择器
<!-- 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-action属性:从另一个元素剪切文本,若省略这个属性,则默认为复制
//cut(剪切)操作只能在<input> 或者 <textarea> 元素上生效
<!-- Target -->
<textarea id="bar">Mussum ipsum cacilds...</textarea>

<!-- Trigger -->
<button class="btn" data-clipboard-action="cut" data-clipboard-target="#bar">
    Cut to clipboard
</button>

//从属性复制文本
//data-clipboard-text属性
<button class="btn" data-clipboard-text="Just because you can doesn't mean you should — clipboard.js">
    Copy to clipboard
</button>

3、事件

var clipboard = new ClipboardJS('.btn');
clipboard.on('success', function(e) { //复制成功的回调
    console.info('Action:', e.action);
    console.info('Text:', e.text);
    console.info('Trigger:', e.trigger);

    e.clearSelection();
});

clipboard.on('error', function(e) { //复制失败的回调
    console.error('Action:', e.action);
    console.error('Trigger:', e.trigger);
});

4、高级用法

//1、动态设置target,返回一个node节点
new ClipboardJS('.btn', {
    target: function(trigger) {
        return trigger.nextElementSibling;
    }
});

//2、动态设置text,返回字符串
new ClipboardJS('.btn', {
    text: function(trigger) {
        return trigger.getAttribute('aria-label');
    }
});

//3、获得焦点的元素设置为 container属性的值
new ClipboardJS('.btn', {
    container: document.getElementById('modal')
});

//4、销毁对象
clipboard.destroy();

二、在vue中使用。在vue中使用,不会直接使用clipboard.js,而是使用针对于vue项目的clipboard.js插件——vue-clipboard2。

①安装
1、在纯vue项目中使用

npm install --save vue-clipboard2

2、一般的html中引入vue.js文件的页面中使用

<script src="vue.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script>

②在纯vue项目中使用时需要在main.js中引入

import Vue from 'vue'
import VueClipboard from 'vue-clipboard2'
 
Vue.use(VueClipboard)

③使用

<div id="app"></div>
 
<template id="t">
  <div class="container">
    <input type="text" v-model="message">
    <button type="button"
      v-clipboard:copy="message"
      v-clipboard:success="onCopy"
      v-clipboard:error="onError">Copy!</button>
     <button type="button" @click="doCopy">Copy!</button>
  </div>
</template>
 
<script>
new Vue({
  el: '#app',
  template: '#t',
  data: function () {
    return {
      message: 'Copy These Text'
    }
  },
  methods: {
    onCopy: function (e) {
      alert('You just copied: ' + e.text)
    },
    onError: function (e) {
      alert('Failed to copy texts')
    },
    doCopy: function () {
        this.$copyText(this.message).then(function (e) {
          alert('Copied')
          console.log(e)
        }, function (e) {
          alert('Can not copy')
          console.log(e)
        })
      }
  }
})
</script> 

clipboardjs官网地址链接:http://www.clipboardjs.cn/
vue-clipboard2地址链接:https://www.npmjs.com/package/vue-clipboard2
gitlab地址链接:https://github.com/grmlin/clipboardjs

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值