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

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