使用 JavaScript 訪問剪貼板

在本文中,我將向你展示如何使用簡(jiǎn)單的 JavaScript 代碼實(shí)現(xiàn):

1承疲、 在用戶操作上向剪貼板添加文本燃箭,例如按下按鈕冲呢。
2、當(dāng)用戶復(fù)制內(nèi)容時(shí)修改剪貼板的內(nèi)容招狸。

將要使用的 API 不需要任何外部庫碗硬,并且具有很好的瀏覽器兼容性!

通過點(diǎn)擊按鈕復(fù)制

在網(wǎng)頁上瓢颅,定義一個(gè)按鈕恩尾,可以點(diǎn)擊這個(gè)個(gè)按鈕快速復(fù)制指定的內(nèi)容。用戶只要鼠標(biāo)輕輕一點(diǎn)就可以把需要的內(nèi)容快速復(fù)制在粘貼面板挽懦,可以讓用戶有更加舒適的體驗(yàn)翰意。

此交互可應(yīng)用于快速獲取 URL ,長(zhǎng)字符串(如 SSH 密鑰,終端命令冀偶,十六進(jìn)制顏色或經(jīng)常復(fù)制和粘貼的任何其他數(shù)據(jù))醒第。

為了實(shí)現(xiàn)這個(gè)功能,我們需要使用一個(gè)名為 execCommand() 的 JavaScript 方法进鸠。它允許我們調(diào)用許多操縱可編輯內(nèi)容的不同事件稠曼,例如使文本變?yōu)榇煮w或者斜體、進(jìn)行撤消或者重做客年、以及復(fù)制霞幅、剪切和粘貼。

document.execCommand('copy');

上面這段代碼量瓜,和在鍵盤上按 ctrl + c 是一樣的司恳。

JavaScript 中我們可以通過 Selection API 來獲取 HTML 頁面中的元素。

現(xiàn)在創(chuàng)建一個(gè)小例子:

HTML 代碼

<!DOCTYPE html>
<html>
<head>
    <title>Demo</title>
</head>
<body>
    <p id="content-holder">This text will be inserted into the clipboard.</p>

    <button id="copy-button">Copy Text</button>

    <textarea placeholder="Paste here"></textarea>
</body>
</html>

JS 代碼

// 通過 getElementById 方法獲取 id 為 copy-button 的 button 標(biāo)簽
var button = document.getElementById("copy-button"); 

// 通過 getElementById 方法獲取 id 為 content-holder 的 p 標(biāo)簽
var contentHolder = document.getElementById("content-holder");

// 監(jiān)聽 button 標(biāo)簽的點(diǎn)擊事件,當(dāng) button 標(biāo)簽被點(diǎn)擊時(shí)绍傲,觸發(fā)后面的回調(diào)函數(shù)
button.addEventListener("click", function() {
    
    // 創(chuàng)建 createRange 方法對(duì)象
    var range = document.createRange();
    
    // 創(chuàng)建 getSelection 方法對(duì)象扔傅,表示用戶選擇的文本范圍或光標(biāo)的當(dāng)前位置。
    var selection = window.getSelection();
    
    // 通過 selection.removeAllRanges() 方法清除選擇范圍
    selection.removeAllRanges();
    
    // selectNodeContents 方法選擇 contentHolder 子節(jié)點(diǎn)的內(nèi)容
    // 這里指 p 標(biāo)簽中的文本節(jié)點(diǎn)內(nèi)容
    range.selectNodeContents(contentHolder);
    
    // 一個(gè)區(qū)域(Range)對(duì)象將被增加到選區(qū)(Selection)當(dāng)中烫饼。
    // 將剛剛選中的 p 標(biāo)簽文本添加到 selection 
    selection.addRange(range);

    // execCommand 中的 copy 方法拷貝剛剛選到的內(nèi)容
    document.execCommand('copy');
    
    // 重新初始化區(qū)域?qū)ο?range
    selection.removeAllRanges();

}, false);

CSS 代碼

*{
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

body{
    padding: 20px;
    font: normal 16px sans-serif;
    color: #555;
}

p{
    margin-bottom: 20px;
}

button{
    padding: 8px 12px;
    margin-bottom: 20px;
}

textarea {
    display: block;
    padding: 10px;
    width: 400px;
    height: 120px;
}

下方動(dòng)圖是功能的演示效果猎塞。只要點(diǎn)擊復(fù)制按鈕,就可以復(fù)制到上面的格言杠纵。不用使用 ctrl + c 和用鼠標(biāo)選中再右鍵復(fù)制那么麻煩了荠耽。

希望分享的內(nèi)容對(duì)大家有幫助,感謝你們的關(guān)注與支持淡诗。

點(diǎn)個(gè)關(guān)注骇塘,就是一份支持伊履。

最后編輯于
?著作權(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)離奇詭異请梢,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)力穗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評(píng)論 2 383
  • 文/潘曉璐 我一進(jìn)店門毅弧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人当窗,你說我怎么就攤上這事够坐。” “怎么了?”我有些...
    開封第一講書人閱讀 156,531評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵元咙,是天一觀的道長(zhǎng)梯影。 經(jīng)常有香客問我,道長(zhǎng)庶香,這世上最難降的妖魔是什么甲棍? 我笑而不...
    開封第一講書人閱讀 56,309評(píng)論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮赶掖,結(jié)果婚禮上感猛,老公的妹妹穿的比我還像新娘。我一直安慰自己倘零,他們只是感情好唱遭,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著呈驶,像睡著了一般拷泽。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上袖瞻,一...
    開封第一講書人閱讀 49,730評(píng)論 1 289
  • 那天司致,我揣著相機(jī)與錄音,去河邊找鬼聋迎。 笑死脂矫,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的霉晕。 我是一名探鬼主播庭再,決...
    沈念sama閱讀 38,882評(píng)論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼牺堰!你這毒婦竟也來了拄轻?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,643評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤伟葫,失蹤者是張志新(化名)和其女友劉穎恨搓,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(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
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望灌闺。 院中可真熱鬧艰争,春花似錦、人聲如沸桂对。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蕉斜。三九已至逾柿,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間宅此,已是汗流浹背机错。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評(píng)論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留父腕,地道東北人弱匪。 一個(gè)月前我還...
    沈念sama閱讀 46,248評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像璧亮,于是被迫代替她去往敵國和親萧诫。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評(píng)論 2 348

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

  • 搜索 Eclipse常用快捷鍵 編輯 查看 窗口 導(dǎo)航 文本編輯 文件 項(xiàng)目 源代碼 運(yùn)行 重構(gòu) 其他Eclips...
    CarlosLynn閱讀 1,610評(píng)論 0 7
  • ??JavaScript 最初的一個(gè)應(yīng)用,就是分擔(dān)服務(wù)器處理表單的責(zé)任躬络,打破處處依賴服務(wù)器的局面尖奔。 ??盡管目前的...
    霜天曉閱讀 659評(píng)論 0 3
  • Ubuntu的發(fā)音 Ubuntu馁菜,源于非洲祖魯人和科薩人的語言,發(fā)作 oo-boon-too 的音铃岔。了解發(fā)音是有意...
    螢火蟲de夢(mèng)閱讀 99,197評(píng)論 9 467
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5汪疮? 答:HTML5是最新的HTML標(biāo)準(zhǔn)峭火。 注意:講述HT...
    kismetajun閱讀 27,445評(píng)論 1 45
  • Eclipse常用快捷鍵 1幾個(gè)最重要的快捷鍵 代碼助手:Ctrl+Space(簡(jiǎn)體中文操作系統(tǒng)是Alt+/)快速...
    山不轉(zhuǎn)人自轉(zhuǎn)閱讀 1,439評(píng)論 0 10