最近使用Vue開(kāi)發(fā)Line(日韓的一款類似中國(guó)微信平臺(tái))的內(nèi)嵌H5.里面的有一個(gè)需求就是將當(dāng)前鏈接粘貼,然后發(fā)送到pc端,在電腦上進(jìn)行打開(kāi)。所有搜集找到了一下幾種情況:
1.不帶input輸入框的原生js方法
這種情況適用于復(fù)制非輸入框中的文本到剪切板
<h1 id="content">被復(fù)制的內(nèi)容</h1> <button id="button">點(diǎn)擊復(fù)制</button> <script> (function(){ button.addEventListener('click', function(){ var copyDom = document.querySelector('#content'); //創(chuàng)建選中范圍 var range = document.createRange(); range.selectNode(copyDom); //移除剪切板中內(nèi)容 window.getSelection().removeAllRanges(); //添加新的內(nèi)容到剪切板 window.getSelection().addRange(range); //復(fù)制 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方法
用于復(fù)制input,textarea中的文本
<input type="text" id="input" value="17373383"> <br> <button type="button" id="button">復(fù)制輸入框中內(nèi)容</button> <script> (function(){ button.addEventListener('click', function(){ input.select(); document.execCommand('copy'); alert('復(fù)制成功'); }) })() </script>
這種方法也可以進(jìn)行延深,充當(dāng)和方法1一樣的用途。動(dòng)態(tài)創(chuàng)建一個(gè)input輸入框,將其內(nèi)容置為想復(fù)制的內(nèi)容,最后在將其移除或者隱藏即可。
3.js復(fù)制內(nèi)容到剪貼板插件(clipboard.js)
clipboard.js官網(wǎng)
clipboard.js CDN地址
引用方式:
NPM npm install --save clipboard
CDN
<script src="https://cdn.bootcss.com/clipboard.js/2.0.1/clipboard.js"></script>
<!--默認(rèn)是截取.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>
里面還有很多高級(jí)用法,可以前往官網(wǎng)邏輯更多細(xì)節(jié) Clipboard官網(wǎng)
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>
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
標(biāo)簽:文山 咸陽(yáng) 紅河 萍鄉(xiāng) 惠州 蘇州 甘南 營(yíng)口
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Html5剪切板功能的實(shí)現(xiàn)代碼》,本文關(guān)鍵詞 Html5,剪切板,功能,的,實(shí)現(xiàn),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。