Clipboard -- 剪貼板操作

四種實(shí)現(xiàn)剪貼板的操作

  • 原生 document.execCommand() 方法
  • 異步的 Clipboard API
  • copy 事件和 paste 事件
  • 第三方庫 clipboard.js

前三個的詳細(xì)內(nèi)容可以查閱阮一峰老師的剪貼板操作 Clipboard API 教程。我們來看看第四種使用 clipboard.js 庫簡化原生操作。

第三方庫 Clipboard.js

首先,在我們的項(xiàng)目中使用 NPM 引入 clipboard:

$ npm i clipboard

或者使用 CDN:

<script src="https://cdn.jsdelivr.net/npm/clipboard@2.0.10/dist/clipboard.min.js"></script>

Clipboard.js 的文檔已經(jīng)很全面了,以下是一些簡單的實(shí)例。

復(fù)制文本

通過 data-clipboard-target 綁定相對應(yīng)的 id 進(jìn)行匹配:

<!-- Target -->
<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>

更簡便的方法是,使用 data-clipboard-text 屬性設(shè)置您想包含的內(nèi)容即可。

<button class="btn" data-clipboard-text="Copy to Clipboard"></button>

剪切文本

定義 data-clipboard-action 屬性,以指定是要 copy 還是 cut 內(nèi)容。

<button class="btn" data-clipboard-action="cut" data-clipboard-target="#foo">
  Cut to clipboard
</button>

注意:cut 操作僅適用于 <input><textarea> 元素。

事件

successerror 讓您監(jiān)聽和實(shí)現(xiàn)您的自定義邏輯。

const clipboard = new ClipboardJS('.btn')

clipboard.on('success', e => {
  console.info('Action:', e.action)
  console.info('Text:', e.text)
  console.info('Trigger:', e.trigger)

  e.clearSelection()
})

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

還有一些高級選項(xiàng),詳細(xì)見文檔。

示例:添加著作權(quán)

我們在很多知識分享平臺都可以看到,當(dāng)我們復(fù)制一段超過一定字?jǐn)?shù)的內(nèi)容時,會在您復(fù)制的內(nèi)容最后追加上一段標(biāo)注:

作者:xxx
鏈接:xxx
來源:xxx
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。`

我們使用 copy 事件來實(shí)現(xiàn)(這里不對復(fù)制多少字?jǐn)?shù)做判斷):

document.addEventListener('copy', e => {
  const selection = document.getSelection()
  const ct = `作者:lio
鏈接:http://www.itdecent.cn
來源:簡書
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。`
  e.clipboardData.setData('text/plain', selection.toString() + '\n' + ct)
  e.preventDefault()
})

復(fù)制這段代碼到控制臺,試著隨意復(fù)制一段文本到其他地方。

嘗試著,使用其他以上所講述的任何方法,來修改這個示例,以加深印象。

更多資料

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容