clipboard是一款现代化的拷贝文字的插件。
一、在一般的使用:
1、引入js文件
1 | <script src="//i2.wp.com/cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script> |
2、使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | //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、事件
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | //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项目中使用
1 | npm install --save vue-clipboard2 |
2、一般的html中引入vue.js文件的页面中使用
1 2 | <script src="vue.min.js"></script> <script src="//i2.wp.com/cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script> |
②在纯vue项目中使用时需要在main.js中引入
1 2 3 4 | import Vue from 'vue' import VueClipboard from 'vue-clipboard2' Vue.use(VueClipboard) |
③使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | <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