純JS實(shí)現(xiàn)剪貼板復(fù)制功能

本文介紹了JS與剪貼板相關(guān)的功能惩坑。

1.背景

事情的起因是使用阿里巴巴矢量圖標(biāo)庫(kù),使用頁(yè)面大概長(zhǎng)得是這樣的

1.PNG

從圖庫(kù)里面選取適用的圖標(biāo)也拜,下載資源文件放進(jìn)項(xiàng)目中以舒,然后就可以在項(xiàng)目中很方便的進(jìn)行使用。

2.png

每次使用的時(shí)候都需要手動(dòng)復(fù)制圖標(biāo)下方的類(lèi)名慢哈,然后在項(xiàng)目中新建一個(gè)標(biāo)簽蔓钟,并添加上類(lèi)名。如果能直接把圖標(biāo)一點(diǎn)卵贱,就能把所需要的東西直接粘貼出來(lái)滥沫,就很方便侣集。

2.Clipboard.js

在HTML5之前,網(wǎng)頁(yè)上的復(fù)制功能還需要用到JS+Flash結(jié)合的方法兰绣。但是隨著HTML5推出的一系列API世分,使得純JS實(shí)現(xiàn)復(fù)制功能能夠?qū)崿F(xiàn)。比如這里提到的Clipboard.js缀辩。

新版的Clipboard.js使用起來(lái)很簡(jiǎn)單臭埋。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>clipboard</title>
    <script src="../../src/clipboard.js-master/dist/clipboard.min.js"></script>
</head>

<body>
    <input id="foo" value="something to copy/cut">
    <button class="btn" data-clipboard-action="cut" data-clipboard-target="#foo">按鈕</button>
    <script>
        var clipboard = new Clipboard('.btn');
    </script>
</body>

</html>

首先是選擇一個(gè)需要點(diǎn)擊的元素,可以是<button>或者是別的臀玄。

  • data-clipboard-action屬性斋泄,屬性值為copy或者cut,分別對(duì)應(yīng)的是復(fù)制和剪切操作镐牺,只有當(dāng)目標(biāo)元素是<input>或者是<textarea>時(shí)炫掐,剪切操作才有效果;否則等同于復(fù)制操作睬涧。
  • data-clipboard-target屬性募胃,根據(jù)css選擇器找到元素,當(dāng)選擇結(jié)果不唯一時(shí)畦浓,只會(huì)對(duì)選到的第一個(gè)元素生效痹束。

或者可以不使用data-clipboard-target屬性,而可以使用data-clipboard-text屬性讶请。

  • data-clipboard-text屬性祷嘶,使用該屬性,能直接將屬性值存入剪貼板夺溢。

屬性添加完整后论巍,在js中對(duì)復(fù)制按鈕進(jìn)行實(shí)例化。

var clipboard = new Clipboard('.btn');

參數(shù)可以是css選擇器风响,或者dom節(jié)點(diǎn)嘉汰。當(dāng)選擇器選中多個(gè)節(jié)點(diǎn)時(shí),會(huì)對(duì)所有的節(jié)點(diǎn)生效状勤,即點(diǎn)擊各個(gè)節(jié)點(diǎn)時(shí)可以觸發(fā)各自對(duì)應(yīng)的復(fù)制剪切事件鞋怀。


最后是插件的兩個(gè)事件

clipboard.on('success', function(e) {
    console.info('Action:', e.action);
    console.info('Text:', e.text);
    console.info('Trigger:', e.trigger);
    e.clearSelection();//清除復(fù)制后文字的選中狀態(tài)
});

clipboard.on('error', function(e) {
    console.error('Action:', e.action);
    console.error('Trigger:', e.trigger);
});

3.實(shí)際應(yīng)用

有了好用的插件之后,就可以對(duì)最開(kāi)始的那個(gè)頁(yè)面進(jìn)行改進(jìn)了持搜。下載好文檔以后密似,首先查看一下文檔結(jié)構(gòu),每個(gè)圖標(biāo)的結(jié)構(gòu)大致如下葫盼。

  <div class="main markdown">
        <h1>IconFont 圖標(biāo)</h1>
        <ul class="icon_lists clear">

            <li>
                <i class="icon iconfont icon-cuowu"></i>
                <div class="name" id="the-error">錯(cuò)誤</div>
                <div class="fontclass">.icon-cuowu</div>
            </li>

            <li>
                <i class="icon iconfont icon-erweima"></i>
                <div class="name">二維碼</div>
                <div class="fontclass">.icon-erweima</div>
            </li>

            ...

        </ul>
    </div>

我們想要達(dá)成的效果是當(dāng)點(diǎn)擊二維碼圖標(biāo)的時(shí)候残腌,就會(huì)復(fù)制以下內(nèi)容。

<i class="icon iconfont icon-erweima"></i>

然后做出了如下的js

$(function () {

    var clipboard = new Clipboard('i.icon');
    clipboard.on('success', function (e) {
        console.log('復(fù)制成功');
    });

    var makePrepare = function () {
        $('i.icon').each(function () {
            var $this = $(this);
            var theClass = $this.attr('class');
            var text = '<i class="' + theClass + '"></i>';
            $this.attr('data-clipboard-action', 'copy');
            $this.attr('data-clipboard-text', text);
        })
    }

    makePrepare();

})

最后,實(shí)現(xiàn)了想要的效果废累。點(diǎn)擊一下想要的圖標(biāo)邓梅,就可以直接粘貼了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末邑滨,一起剝皮案震驚了整個(gè)濱河市日缨,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌掖看,老刑警劉巖匣距,帶你破解...
    沈念sama閱讀 210,914評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異哎壳,居然都是意外死亡毅待,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評(píng)論 2 383
  • 文/潘曉璐 我一進(jìn)店門(mén)归榕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)尸红,“玉大人,你說(shuō)我怎么就攤上這事刹泄⊥饫铮” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,531評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵特石,是天一觀的道長(zhǎng)盅蝗。 經(jīng)常有香客問(wèn)我,道長(zhǎng)姆蘸,這世上最難降的妖魔是什么墩莫? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,309評(píng)論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮逞敷,結(jié)果婚禮上狂秦,老公的妹妹穿的比我還像新娘。我一直安慰自己兰粉,他們只是感情好故痊,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布顶瞳。 她就那樣靜靜地躺著玖姑,像睡著了一般。 火紅的嫁衣襯著肌膚如雪慨菱。 梳的紋絲不亂的頭發(fā)上焰络,一...
    開(kāi)封第一講書(shū)人閱讀 49,730評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音符喝,去河邊找鬼闪彼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的畏腕。 我是一名探鬼主播缴川,決...
    沈念sama閱讀 38,882評(píng)論 3 404
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼描馅!你這毒婦竟也來(lái)了把夸?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,643評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤铭污,失蹤者是張志新(化名)和其女友劉穎恋日,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體嘹狞,經(jīng)...
    沈念sama閱讀 44,095評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡岂膳,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了磅网。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片谈截。...
    茶點(diǎn)故事閱讀 38,566評(píng)論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖涧偷,靈堂內(nèi)的尸體忽然破棺而出傻盟,到底是詐尸還是另有隱情,我是刑警寧澤嫂丙,帶...
    沈念sama閱讀 34,253評(píng)論 4 328
  • 正文 年R本政府宣布娘赴,位于F島的核電站,受9級(jí)特大地震影響跟啤,放射性物質(zhì)發(fā)生泄漏诽表。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評(píng)論 3 312
  • 文/蒙蒙 一隅肥、第九天 我趴在偏房一處隱蔽的房頂上張望竿奏。 院中可真熱鬧,春花似錦腥放、人聲如沸泛啸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,715評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)候址。三九已至,卻和暖如春种柑,著一層夾襖步出監(jiān)牢的瞬間岗仑,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,945評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工聚请, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留荠雕,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,248評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像炸卑,于是被迫代替她去往敵國(guó)和親既鞠。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,730評(píng)論 25 707
  • 問(wèn)答題47 /72 常見(jiàn)瀏覽器兼容性問(wèn)題與解決方案盖文? 參考答案 (1)瀏覽器兼容問(wèn)題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,734評(píng)論 1 92
  • 原創(chuàng) 文/王漢平 孤獨(dú)的夜损趋,你又和誰(shuí)牽手并肩走著,我曾不止一次迷路在陌生的大街椅寺。霓虹閃爍浑槽,車(chē)...
    山河小生閱讀 342評(píng)論 0 1
  • 姓名:周天裔 準(zhǔn)考證號(hào):171502104200 學(xué)籍號(hào):G411502200211112015 請(qǐng)羅老師查收!
    毛毛細(xì)雨mmxy閱讀 168評(píng)論 0 0
  • 行動(dòng)起來(lái)真的是沒(méi)有想像的那么容易呀返帕!從決心開(kāi)始改變的那一刻桐玻,內(nèi)心是多么充滿力量,過(guò)去一天之后荆萤,所做的計(jì)劃就在腦海里...
    kingwen0閱讀 151評(píng)論 0 0