最近使用Vue开发Line(日韩的一款类似中国微信平台)的内嵌H5.里面的有一个需求就是将当前链接粘贴,然后发送到pc端,在电脑上进行打开。所有搜集找到了一下几种情况:
1.不带input输入框的原生js方法
这种情况适用于复制非输入框中的文本到剪切板
<h1 id=content>被复制的内容</h1> <button id=button>点击复制</button> <script> (function(){ button.addEventListener('click', function(){ var copyDom = document.querySelector('#content'); //创建选中范围 var range = document.createrange(); range.selectNode(copyDom); //移除剪切板中内容 window.getSelection().removeAllRanges(); //添加新的内容到剪切板 window.getSelection().addRange(range); //复制 var successful = document.execCommand('copy'); try{ var msg = successful ? successful : Failed; alert('copy command was : ' + msg); } catch(err){ alert('Oops , unable to copy!'); } }) })() </script>
2.带输入框的原生js方法
用于复制input,textarea中的文本
<input type=text id=input value=17373383> <br> <button type=button id=button>复制输入框中内容</button> <script> (function(){ button.addEventListener('click', function(){ input.select(); document.execCommand('copy'); alert('复制成功'); }) })() </script>
这种方法也可以进行延深,充当和方法1一样的用途。动态创建一个input输入框,将其内容置为想复制的内容,最后在将其移除或者隐藏即可。
clipboard.js官网
clipboard.js CDN地址
引用方式:
NPM npm install --save clipboard
CDN <script src=https://cdn.bootcss.com/clipboard.js/2.0.1/clipboard.js></script>
<!--默认是截取.btn中的 data-clipboard-text的属性值--> <!-- <button class=btn data-clipboard-text=3>copy</button> --> <!--截取input输入框中的值--> <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> <script src=https://cdn.bootcss.com/clipboard.js/2.0.1/clipboard.js></script> <script> var clipboard = new ClipboardJS('.btn'); clipboard.on('success', function (e) { console.log(e); }); clipboard.on('error', function (e) { console.log(e); }); </script>
里面还有很多高级用法,可以前往官网逻辑更多细节 Clipboard官网
4. Vue框架提供的剪切板插件 vue-clipboard2
import Vue from 'vue' import VueClipboard from 'vue-clipboard2' VueClipboard.config.autoSetContainer = true // add this line Vue.use(VueClipboard)
Sample1
<p id=app></p> <template id=t> <p 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> </p> </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') } } }) </script>
Sample2
<p id=app></p> <template id=t> <p class=container> <input type=text v-model=message> <button type=button @click=docopy>copy!</button> </p> </template> <script> new Vue({ el: '#app', template: '#t', data: function () { return { message: 'copy These Text' } }, methods: { docopy: function () { this.$copyText(this.message).then(function (e) { alert('copied') console.log(e) }, function (e) { alert('Can not copy') console.log(e) }) } } }) </script>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。