成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

告別 Flash 和臃腫框架!這個 3 萬 Star 的開源工具幫你提高效率

開發 開發工具
將文本復制到剪貼板不應該搞得復雜,它不應該需要幾十個步驟來配置或數百 KB 來加載,更不應該依賴于 Flash 或其他臃腫的框架。

  

為什么選擇 clipboard.js

將文本復制到剪貼板不應該搞得復雜,它不應該需要幾十個步驟來配置或數百 KB 來加載,更不應該依賴于 Flash 或其他臃腫的框架。

clipboard.js 擺脫了這些限制,就可以實現便捷輕量的操作剪貼板。

安裝

npm 安裝:

  1. npm install clipboard --save 

或者下載壓縮包文件:github.com/zenorocha/cl

配置

如果已經通過 npm 安裝,則直接 import:

  1. import ClipboardJS from "clipboard"

如果不使用 npm 管理,需要通過 script 引入或者通過 第三方CDN 加載。

  1. <script src="dist/clipboard.min.js"></script> 

然后通過傳入 DOM 選擇器 或 HTML 元素 或 HTML 元素數組 創建 Clipboard 實例。

  1. new ClipboardJS('.btn'); 

一般情況下,對于所有符合條件的元素都需要添加監聽事件,但如果符合條件的元素較多,這樣會消耗大量的內存。 因此,clipboard.js 使用了 事件代理,用一個監聽器替代了全部的監聽器,這樣最大程度的保證了性能。

使用

從其他元素中拷貝內容

如果需要從其他元素中拷貝內容,可以通過在觸發元素上添加 data-clipboard-target 屬性,屬性值為一個選擇器,選中被拷貝元素。

  1. <!-- Target --> 
  2. <input id="foo" value="https://github.com/zenorocha/clipboard.js.git"
  3.  
  4. <!-- Trigger --> 
  5. <button class="btn" data-clipboard-target="#foo"
  6.     <img src="assets/clippy.svg" alt="Copy to clipboard"
  7. </button> 

從其他元素中剪貼內容

在觸發元素中添加 data-clipboard-action 屬性,屬性值可以為 copy 或者 cut,設置為 cut 即可剪貼內容,默認為 copy

  1. <!-- Target --> 
  2. <textarea id="bar">Mussum ipsum cacilds...</textarea> 
  3.  
  4. <!-- Trigger --> 
  5. <button class="btn" data-clipboard-action="cut" data-clipboard-target="#bar"
  6.     Cut to clipboard 
  7. </button> 
注意: cut 僅在 <input> 或 <textarea> 元素中生效。

從屬性中拷貝內容

如果不需要從其他元素中拷貝內容,那么可以在觸發元素上添加 data-clipboard-text 屬性,屬性值為需要拷貝的內容。

  1. <!-- Trigger --> 
  2. <button class="btn" data-clipboard-text="Just because you can doesn't mean you should — clipboard.js"
  3.     Copy to clipboard 
  4. </button> 

事件處理

如果在拷貝完后需要執行其他自定義操作,可以添加 success 或 error 事件。

  1. var clipboard = new ClipboardJS('.btn'); 
  2.  
  3. clipboard.on('success', function(e) { 
  4.     console.info('Action:', e.action); 
  5.     console.info('Text:', e.text); 
  6.     console.info('Trigger:', e.trigger); 
  7.  
  8.     e.clearSelection(); 
  9. }); 
  10.  
  11. clipboard.on('error', function(e) { 
  12.     console.error('Action:', e.action); 
  13.     console.error('Trigger:', e.trigger); 
  14. }); 

實例展示:進入 官網,打開 console 即可。

Tooltips

由于每個應用都有不同的設計,因此 clipboard.js 不提供任何內置 css 的 tooltip 解決方案。

如果需要實現 tooltip 效果,可以參考官網實現類似效果,網站中使用的是 GitHub's Primer 樣式。

高級選項

如果不想修改 HTML 代碼,也可以使用 API 實現上述效果,只需要在實例中聲明函數,返回所需值。

例如,如果需要動態設置 target,可以返回一個 Node 節點。

  1. new ClipboardJS('.btn', { 
  2.     text: function(trigger) { 
  3.         return trigger.getAttribute('aria-label'); 
  4.     } 
  5. }); 

如果需要動態設置 text,可以返回一個 String 。

  1. new ClipboardJS('.btn', { 
  2.     text: function(trigger) { 
  3.         return trigger.getAttribute('aria-label'); 
  4.     } 
  5. }); 

如果在 Bootstrap 模態框(Modals)中使用,或是在其他修改焦點的類庫中使用,可以將獲得焦點的元素設置為 container屬性的值。

  1. new ClipboardJS('.btn', { 
  2.     container: document.getElementById('modal'
  3. }); 

同樣地,單頁面應用中,如果需要更加精確地管理 DOM 的生命周期,可以清理事件以及創建的對象。

  1. var clipboard = new ClipboardJS('.btn'); 
  2. clipboard.destroy(); 

Vue3 中嘗試使用 clipboard.js

新建一個 Vue3 項目,安裝 clipboard.js

  1. // 新建 vue 項目 
  2. vue create clipboard 
  3.  
  4. // 安裝 
  5. yarn add clipboard 

簡單使用剪貼功能

修改 App.vue,引入ClipboardJS,刪除其他元素,新增測試用元素

  1. <!-- App.vue --> 
  2. <template> 
  3.   <div class="wrapper"
  4.     <input id="foo" value="https://github.com/zenorocha/clipboard.js.git" /> 
  5.  
  6.     <button 
  7.       class="btn" 
  8.       data-clipboard-target="#foo" 
  9.       data-clipboard-action="cut" 
  10.     > 
  11.       Copy to clipboard 
  12.     </button> 
  13.   </div> 
  14. </template> 

在 Vue3 setup 函數中初始化 clipboard 實例

  1. // 引入 
  2. import ClipboardJS from "clipboard"
  3.  
  4. // setup 函數中實例化 
  5. setup() { 
  6.   new ClipboardJS(".btn"); 
  7. }, 

可以看到點擊按鈕剪貼成功!

添加 success 函數

當剪貼成功后,彈出剪貼成功信息,對上述示例稍作修改,input 中的內容采用雙向綁定:

  1. <template> 
  2.   <div class="wrapper"
  3.     <input id="foo" :value="content" /> 
  4.  
  5.     <button 
  6.       class="btn" 
  7.       data-clipboard-target="#foo" 
  8.       data-clipboard-action="cut" 
  9.     > 
  10.       Copy to clipboard 
  11.     </button> 
  12.   </div> 
  13. </template> 
  14.  
  15. // setup 函數 
  16.   setup() { 
  17.     const clipboard = new ClipboardJS(".btn"); 
  18.     const content = ref("clipboard 測試內容"); 
  19.     clipboard.on("success", (e) => { 
  20.       alert(`剪貼成功: ${e.text}`); 
  21.       console.info("Action:", e.action); 
  22.       console.info("Text:", e.text); 
  23.       console.info("Trigger:", e.trigger); 
  24.       e.clearSelection(); 
  25.     }); 
  26.     return { content }; 
  27.   } 

彈出框如下: 

 

 

 

 

 

打印如下: 

 

 


瀏覽器支持 

 

 

 

 

責任編輯:張燕妮 來源: 知乎
相關推薦

2023-05-17 16:47:47

物聯網智能建筑

2020-01-21 19:39:31

數據中心服務器工具

2014-12-12 09:52:04

JavaScript

2023-01-10 11:18:29

DevOps

2010-04-13 15:14:31

Oracle優化

2015-11-27 12:59:11

Android技巧提高效率

2018-09-30 14:46:38

Linux命令技巧

2015-09-06 16:05:57

綠色數據中心效率

2012-03-27 09:17:43

Visual Stud

2020-06-04 15:55:54

GitHub代碼開發者

2025-01-15 17:00:00

開發Linux命令

2023-10-23 15:02:53

JavaScript

2019-06-25 08:42:13

Linux命令指令

2021-12-17 15:03:50

Python工具代碼

2010-09-09 16:51:50

2015-06-02 09:33:30

編程效率程序員

2022-11-30 15:22:02

DevOps軟件開發運維

2012-06-01 14:44:27

惠普臺式機

2012-07-16 00:51:36

程序員效率

2015-05-22 14:01:50

編程提高效率
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 免费在线看黄 | 成人国产午夜在线观看 | 在线观看免费av网站 | 久久久精品一区二区三区 | 国产精品18久久久 | 一区二区三区四区五区在线视频 | 欧美精品a∨在线观看不卡 国产精品久久国产精品 | 三级成人片 | 一区二区三区在线 | 欧 | 国产第一页在线播放 | 国产视频91在线 | 国产激情视频在线免费观看 | 久久免费视频观看 | 久久久久久国产 | 欧美一区二区三区在线 | 亚洲一级毛片 | 精品视频一区二区三区四区 | 亚洲国产成人一区二区 | 日韩一区二区成人 | 亚洲成人播放器 | h片在线免费观看 | 欧美一级欧美三级在线观看 | 精品真实国产乱文在线 | 色综合久久久久 | 91免费高清 | 天天干天天操 | av在线播放不卡 | 日韩精品一区在线 | 中文久久 | 伊人网综合| 精品在线一区 | 视频一区中文字幕 | 国产成人91视频 | 久久精品一二三影院 | 美国黄色一级片 | 国产精品特级毛片一区二区三区 | 国产精品综合色区在线观看 | 亚洲欧美日韩网站 | 亚洲精品中文字幕 | 蜜月aⅴ国产精品 | 国产精品久久国产精品 |