最近使用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輸入框,將其內容置為想複製的內容,最後在移除或隱藏即可。
3.js複製內容到剪貼簿插件(clipboard.js)
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 </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
<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> </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') } } }) </script>
Sample2
<div id=app></div> <template id=t> <div class=container> <input type=text v-model=message> <button type=button @click=doCopy>Copy!</button> < /div> </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>
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。