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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章