Clipboard:黏貼簿操作

news/2024/7/19 14:56:46 标签: js, javascript

Clipboard:黏貼簿操作

文章目錄

  • Clipboard:黏貼簿操作
    • 簡介
    • 參考
  • 正文
    • Install 安裝
      • CDN
      • NPM
    • Create 創建對象(官方 Setup)
      • 參數說明
      • Sample
    • Usage in Html 標籤用法
      • 1. Action 執行動作(`data-clipboard-action`)
      • 2. Target 參照目標(`data-clipboard-target`)
      • 3. Text 操作文本(`data-clipboard-text`)
      • Sample
  • 結語

簡介

我們常常會在一些網頁上看到"點擊複製鏈結"的按鈕(像是 github 的地址或是一些分享連結),本篇介紹一個輕量級而且封裝良好的第三方庫:clipboard.js

自己也可以透過 execCommand 來實現點擊複製的操作,但由於自己寫的容易產生各式各樣的問題(封裝不完整、兼容性問題、內存泄露、焦點轉移),同時基於不重複造輪子的精神,有人開源當然是拿起來用啊!

參考

clipboard.jshttps://clipboardjs.com/

正文

本篇僅僅介紹 clipboard.js 庫的使用,其實現原理主要也是透過 execCommand 方法,這部分留到源碼解析的時候再說明

Install 安裝

在開始使用前當然要先安裝(廢話)

CDN

可以透過 CDN 引用:

<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js">javascript"></script>

這裏提供其他多個不同的靜態資源站點,不過都 2020 年了應該大家都引入模塊化開發了,所以筆者本身不推薦這種引用方式

NPM

透過 npm 引入:

$ npm i clipboard --save

使用時:

js">import ClipboardJS from 'clipboard'

Create 創建對象(官方 Setup)

clipboard.js 的思想主要就是創建出一個對象負責管理"點擊複製"行為的按鈕:

js">new ClipboardJS(<element>, <options>)

參數說明

element: String | HTMLElement | HTMLCollection | NodeList // Clipboard 對象的觸發目標
options: {
  target: Function // 返回一個 Element 對象,可動態選擇觸發對象,接收一個參數 triiger 即為 element 對象
  action: Function // 返回執行操作,可選值有 'copy'、'cut'
  text: Function // 返回操作的直接文本
  container: Object // Clipboard 對象掛載的容器,默認為 body
}

Sample

<input id="in" value="hello world" /> 
<button id="cp">Copy!</button>
js">const _cp = new ClipboardJS('#id', {
  action: (trigger) => 'cut',
  target: (trigger) => document.querySelector('#in')
})

Usage in Html 標籤用法

一種用法是全部都在創建 Clipboard 對象的時候根據 trigger 對象配置好所有行為(在 Create 大題),另一種用法是透過 html 標籤來配置目標對象和行為,屬性名都是 data-clipboard-<option>

1. Action 執行動作(data-clipboard-action)

配置執行動作,可選為 copy(複製)cut(剪下)

2. Target 參照目標(data-clipboard-target)

執行動作的目標元素,可傳入選擇器字符串

3. Text 操作文本(data-clipboard-text)

可直接操作的文本字符串

Sample

  • cut + target
<input id="input-1" value="hello world" />
<button id="cp1" data-clipboard-action="cut" data-clipboard-target="#input-1">
  Cut!
</button>
js">const _cp1 = new ClipboardJS('#cp1')
  • text
<button id="cp2" data-clipboard-text="text: hello world">Copy!</button>
js">const _cp2 = new ClipboardJS('#cp2')

結語

以上就是 clipboard.js 的使用方法,可以看得出來作者封裝的還挺不錯的,使用上非常便捷並且侵入性極小,不太容易發生命名衝突的問題,供大家參考。


http://www.niftyadmin.cn/n/735631.html

相关文章

Nim博弈和SG函数

详尽版&#xff1a;博弈论 SG函数 各种博弈论 1.Nim博弈 给定n堆物品&#xff0c;第 i 堆物品有aia_iai​个。两名玩家轮流行动&#xff0c;每次可以任选一堆&#xff0c;取走任意多个物品&#xff0c;可把一堆取光&#xff0c;但不能不取。取走最后一件物品者获胜。两人都…

ESXI6.5只识别一块网卡解决方法

一、简介本人在学习VMware 虚拟化的时候在标准交换机这块遇到了一些问题&#xff0c;由于公司物理设备有限&#xff0c;故使用虚拟机进行实验环境的搭建。在搭建过程中我在虚拟机中添加了四块网卡&#xff0c;安装完系统之后默认是识别的&#xff0c;但是不知道后来做了什么操作…

CSS進階:Grid格線佈局

CSS 進階&#xff1a;Grid 格線佈局 文章目錄CSS 進階&#xff1a;Grid 格線佈局簡介參考正文Grid Element 格線佈局元素Container 外容器1. display2. grid-template-rows / grid-template-columnsSamplerepeat & fr3. grid-template-areasSampleSample-empty4. grid-temp…

定制rpm包、搭建yum仓库

一、定制rpm包1、环境[rootm01 ~]# cat /etc/redhat-release CentOS release 6.9 (Final) [rootm01 ~]# uname -r2.6.32-696.el6.x86_64 [rootm01 ~]# /etc/init.d/iptables status iptables: Firewall is not running. [rootm01 ~]# getenforce Disabled [rootm01 ~]# hostn…

Java二十三设计模式之------解释器式

一、解释器模式&#xff08;Interpreter&#xff09;解释器模式一般主要应用在OOP开发中的编译器的开发中&#xff0c;所以适用面比较窄。 Context类是一个上下文环境类&#xff0c;Plus和Minus分别是用来计算的实现&#xff0c;代码如下&#xff1a; public interface Express…

通过Anaconda创建虚拟环境搭建openCV(MAC)

1.搭建环境 因为苹果系统自带python 2.7&#xff0c;很多系统应用基于它开发&#xff0c;最好不动这个版本的python&#xff0c;创建一个虚拟环境&#xff0c;进行开发较好。 在终端中&#xff0c;使用命令conda create -n openCV python3.6创建一个名为openCV的python 3.6的…

Babel入門:JavaScript 的下一代編譯器

Babel 入門&#xff1a;JavaScript 的下一代編譯器 文章目錄Babel 入門&#xff1a;JavaScript 的下一代編譯器簡介參考正文Concept 概念Core Module 核心模塊1. babel/core2. babel/cli3. babel/preset-env4. babel/polyfill&#xff08;不推薦&#xff09;5. babel/preset-st…

GitHub-demo:Image-Stitching

Image-Stitching 学习源码来自Github-pavanpn/Image-Stitching 主要函数&#xff1a; 1. cv2.cvtColor()  颜色空间转换函数 img_yuvcv2.cvtColor(img,k) # img是需要转换对图片&#xff0c;k是转换成何种格式 # cv2.COLOR_BGR2RGB 将BGR格式转换成RGB格式 # cv2.COLOR_BGR2…