<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
專案地址:https://github.com/zenorocha/clipboard.js
現代化的“複製到剪下板”外掛。不包含 Flash。gzip 壓縮後僅 3kb。
複製文字到剪下板不應該很難去實現。它不需要設定幾十個步驟或者載入幾百 KB 的檔案。最重要的是,它不應該依賴 Flash 或其他臃腫的框架。
這是 clipboard.js 誕生的原因。
你可以通過 npm 來安裝它。
npm install clipboard --save
如果你不使用包管理,僅需要下載一個ZIP檔案。
首先,引入位於dist
目錄下的指令碼檔案,或者引入一個第三方CDN。
<script src="dist/clipboard.min.js"></script>
然後,你需要通過傳入一個DOM 選擇器,HTML 元素, 或者HTML 元素陣列作為引數,來範例化物件。
new Clipboard('.btn');
本質上,我們需要獲取所有選擇器匹配到的元素,併為每一個選擇器設定監聽事件。但仔細想想,如果有成百上千個匹配到的元素,這樣做會耗費大量記憶體。
因此,我們使用事件代理,通過一個事件監聽器來取代多個事件監聽。畢竟,效能是問題。
我們正在經歷一場宣告式的復興,這就是為什麼我們決定利用HTML5data
屬性來提高可用性的原因。
一個很常見的用例是從另一個元素複製內容。你可以給目標元素新增一個data-clipboard-target
屬性來實現這個功能。
這個屬性的值就是能匹配到另一個元素的選擇器。
<!-- 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-action
屬性來指明你想要複製(copy
)還是剪下(cut
)內容。
如果你省略這個屬性,則預設為複製(copy
)。
<!-- Target --> <textarea id="bar">Mussum ipsum cacilds...</textarea> <!-- Trigger --> <button class="btn" data-clipboard-action="cut" data-clipboard-target="#bar"> Cut to clipboard </button>
正如你所預料的,剪下(cut
)動作只在<input>
或<textarea>
元素起作用。
事實上,你甚至不需要從另一個元素來複制內容。你僅需要給目標元素設定一個data-clipboard-text
屬性就可以了。
<!-- Trigger --> <button class="btn" data-clipboard-text="Just because you can doesn't mean you should — clipboard.js"> Copy to clipboard </button>
如果你想要展示一些使用者反饋,或者在使用者複製/剪下後獲取已經選擇的文字,這裡有個範例供你參考。
我們通過觸發自定義事件,例如success
和error
,讓你可以設定監聽並實現自定義邏輯。
var clipboard = new Clipboard('.btn'); clipboard.on('success', function(e) { console.info('Action:', e.action); console.info('Text:', e.text); console.info('Trigger:', e.trigger); e.clearSelection(); }); clipboard.on('error', function(e) { console.error('Action:', e.action); console.error('Trigger:', e.trigger); });
你可以存取這個網站,開啟控制檯,檢視演示範例。
每個應用有著不同的設計需求,這是為什麼 clipboard.js 沒有包含任何 CSS 或內建的工具提示解決方案。
你在範例網站看到的工具提示是通過GitHub's Primer構建的。如果你正在尋找一個外觀和體驗類似的庫,你可以去看看這個專案。
如果你不想修改 HTML,我們提供了一個非常方面的命令式的 API 給你使用。你需要做的就是宣告一個函數,做一些處理,並返回一個值。
例如,如果你希望動態設定target
,你需要返回一個節點(Node).
new Clipboard('.btn', { target: function(trigger) { return trigger.nextElementSibling; } });
如果你希望動態設定text
,你需要返回一個字串。
new Clipboard('.btn', { text: function(trigger) { return trigger.getAttribute('aria-label'); } });
如果在 Bootstrap 模態框(Modals)中使用,或是在其他修改焦點的類庫中使用,你會希望將獲得焦點的元素設定為container
屬性的值。
new Clipboard('.btn', { container: document.getElementById('modal') });
同樣地,如果你使用單頁應用,你可能想要更加精確地管理 DOM 的生命週期。你可以清理事件以及建立的物件。
var clipboard = new Clipboard('.btn'); clipboard.destroy();
這個庫依賴於Selection和execCommand的 API。前者相容所有的瀏覽器,後者相容以下瀏覽器。
好訊息是,如果你需要支援舊瀏覽器,clipboard.js 可以優雅降級。你所要做的就是在success
事件觸發時提示使用者“已複製!”,error
事件觸發時提示使用者“按 Ctrl+C 複製文字”(此時使用者要複製的文字已經選擇了)。
你也可以通過執行Clipboard.isSupported()
來檢查瀏覽器是否支援 clipboard.js,如果不支援,你可以隱藏複製/剪下按鈕。
到此這篇關於clipboard.js實現複製剪下功能的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45