JavaScript點(diǎn)擊按鈕一鍵復(fù)制指定文本內(nèi)容

概述:

最近項(xiàng)目中有個(gè)一鍵點(diǎn)擊按鈕復(fù)制文本的需求哗蜈,在此之前一直使用的都是document.execCommand('Copy')這個(gè)方法线定。百度出來的結(jié)果清一色的也都是使用的這個(gè)方法娜谊,反正網(wǎng)上的文章大家抄來抄去的我也就不吐槽了。

image.png

方法一:

思路就是先調(diào)用選中文本內(nèi)容的方法斤讥,把上面這段文本先選中纱皆,然后再調(diào)用document.execCommand('Copy')可以直接復(fù)制已被選中的文本。

const selection = window.getSelection(); // 該方法獲取一個(gè)selection對(duì)象
selection.selectAllChildren(element) // 該方法從selection對(duì)象中取出可被選擇的目標(biāo)元素并選中芭商,選中前將清除之前的選中
document.execCommand('Copy')  //  該方法允許運(yùn)行copy命令直接復(fù)制已被選中的可編輯內(nèi)容區(qū)域的元素派草。

完整代碼如下:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <div class="message">這段文本將被復(fù)制</div>
    <button class="btn">點(diǎn)擊復(fù)制</button>
    <script>
      const copyEl = document.querySelector('.message')
      const btnEl = document.querySelector('.btn')

      btnEl.addEventListener('click', () => {
        window.getSelection().selectAllChildren(copyEl)
        document.execCommand('Copy')
      })
    </script>
  </body>
</html>

該方法存在兼容性問題,在mdn中也提到getSelectionselectAllChildren都是實(shí)驗(yàn)性功能铛楣。并且document.execCommand()方法已被棄用近迁,隨時(shí)可能從ECMA標(biāo)準(zhǔn)中移除。

方法二:navigator.clipboard.writeText('message')

該方法更為簡(jiǎn)單實(shí)用簸州,且兼容性更好鉴竭,廢話不多說,直接上代碼:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <div class="message">這段文本將被復(fù)制</div>
    <button class="btn">點(diǎn)擊復(fù)制</button>
    <script>
      const copyEl = document.querySelector('.message')
      const btnEl = document.querySelector('.btn')

      btnEl.addEventListener('click', () => {
        // 該方法可以寫入特定字符串到操作系統(tǒng)的剪切板岸浑,并返回一個(gè)Promise
        // 一旦剪貼板的內(nèi)容被更新搏存,它就會(huì)被解析。如果調(diào)用者沒有寫入剪貼板的權(quán)限矢洲,則拒絕寫入剪切板(reject)
        navigator.clipboard
          .writeText(copyEl.textContent)
          .then(() => {
            console.log('復(fù)制成功')
          })
          .catch(() => {
            console.log('復(fù)制失敗')
          })
      })
    </script>
  </body>
</html>

該方法可以寫入特定字符串到操作系統(tǒng)的剪切板璧眠,并返回一個(gè)Promise,復(fù)制成功調(diào)用resolve读虏,復(fù)制失敗調(diào)用reject责静,比方法一更方便快捷。選他就完事了盖桥。

轉(zhuǎn)載請(qǐng)注明出處

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末灾螃,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子揩徊,更是在濱河造成了極大的恐慌腰鬼,老刑警劉巖藐握,帶你破解...
    沈念sama閱讀 221,548評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異垃喊,居然都是意外死亡猾普,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門本谜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來初家,“玉大人,你說我怎么就攤上這事乌助×镌冢” “怎么了?”我有些...
    開封第一講書人閱讀 167,990評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵他托,是天一觀的道長(zhǎng)掖肋。 經(jīng)常有香客問我,道長(zhǎng)赏参,這世上最難降的妖魔是什么志笼? 我笑而不...
    開封第一講書人閱讀 59,618評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮把篓,結(jié)果婚禮上纫溃,老公的妹妹穿的比我還像新娘。我一直安慰自己韧掩,他們只是感情好紊浩,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,618評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著疗锐,像睡著了一般坊谁。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上滑臊,一...
    開封第一講書人閱讀 52,246評(píng)論 1 308
  • 那天口芍,我揣著相機(jī)與錄音,去河邊找鬼简珠。 笑死阶界,一個(gè)胖子當(dāng)著我的面吹牛虹钮,可吹牛的內(nèi)容都是我干的聋庵。 我是一名探鬼主播,決...
    沈念sama閱讀 40,819評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼芙粱,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼祭玉!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起春畔,我...
    開封第一講書人閱讀 39,725評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤脱货,失蹤者是張志新(化名)和其女友劉穎岛都,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體振峻,經(jīng)...
    沈念sama閱讀 46,268評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡臼疫,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,356評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了扣孟。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片烫堤。...
    茶點(diǎn)故事閱讀 40,488評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖凤价,靈堂內(nèi)的尸體忽然破棺而出鸽斟,到底是詐尸還是另有隱情,我是刑警寧澤利诺,帶...
    沈念sama閱讀 36,181評(píng)論 5 350
  • 正文 年R本政府宣布富蓄,位于F島的核電站,受9級(jí)特大地震影響慢逾,放射性物質(zhì)發(fā)生泄漏立倍。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,862評(píng)論 3 333
  • 文/蒙蒙 一侣滩、第九天 我趴在偏房一處隱蔽的房頂上張望帐萎。 院中可真熱鬧,春花似錦胜卤、人聲如沸疆导。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽澈段。三九已至,卻和暖如春舰攒,著一層夾襖步出監(jiān)牢的瞬間败富,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工摩窃, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留兽叮,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,897評(píng)論 3 376
  • 正文 我出身青樓猾愿,卻偏偏與公主長(zhǎng)得像鹦聪,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蒂秘,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,500評(píng)論 2 359

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