JavaScript實(shí)現(xiàn)一鍵復(fù)制文本功能的示例代碼
最近小編做了一鍵復(fù)制文本的需求(功能如下圖所示)。本文簡單介紹兩種javascript實(shí)現(xiàn)文本復(fù)制(將文本寫入剪貼板)的方法——navigator.clipboard
和document.execCommand()
,大家可以根據(jù)需求特點(diǎn)選用。
一、navigator.clipboard 對(duì)象
1. navigator.clipboard 方法匯總
方法 | 用途 |
---|---|
Clipboard.readText() | 復(fù)制剪貼板里的文本數(shù)據(jù) |
Clipboard.read() | 復(fù)制剪貼板里的文本數(shù)據(jù)/二進(jìn)制數(shù)據(jù) |
Clipboard.writeText() | 將文本內(nèi)容寫入剪貼板 |
Clipboard.write() | 將文本數(shù)據(jù)/二進(jìn)制數(shù)據(jù)寫入剪貼板 |
2. 代碼示例
方法 1: Clipboard.writeText()
, 用于將文本內(nèi)容寫入剪貼板;
document.body.addEventListener("click", async (e) => { await navigator.clipboard.writeText("Yo"); });
方法 2: Clipboard.write()
, 用于將文本數(shù)據(jù)/二進(jìn)制數(shù)據(jù)寫入剪貼板
Clipboard.write()
不僅在剪貼板可寫入普通text,還可以寫入圖片數(shù)據(jù)(Chrome瀏覽器僅支持png格式)。
async function copy() { const image = await fetch("kitten.png"); const text = new Blob(["Cute sleeping kitten"], { type: "text/plain" }); const item = new ClipboardItem({ "text/plain": text, "image/png": image, }); await navigator.clipboard.write([item]); }
3. 優(yōu)缺點(diǎn)
① 優(yōu)點(diǎn)
所有操作都是異步的,返回 Promise
對(duì)象,不會(huì)造成頁面卡頓;
無需提前選中內(nèi)容,可以將任意內(nèi)容(比如圖片)放入剪貼板;
② 缺點(diǎn): 允許腳本任意讀取會(huì)產(chǎn)生安全風(fēng)險(xiǎn),安全限制較多。
Chrome 瀏覽器規(guī)定,只有 HTTPS
協(xié)議的頁面才能使用這個(gè) API;
調(diào)用時(shí)需要明確獲得用戶的許可。
二、document.execCommand() 方法
1. document.execCommand() 方法匯總
方法 | 用途 |
---|---|
document.execCommand('copy') | 復(fù)制 |
document.execCommand('cut') | 剪切 |
document.execCommand('paste') | 粘貼 |
2. 代碼示例
document.execCommand('copy')
,用于將已選中的文本內(nèi)容寫入剪貼板。
結(jié)合 window.getSelection()
方法實(shí)現(xiàn)一鍵復(fù)制功能:
const TestCopyBox = () => { const onClick = async () => { const divElement = document.getElementById("select-div"); if (window.getSelection) { const selection = window.getSelection(); const range = document.createRange(); range.selectNodeContents(divElement); selection.removeAllRanges(); selection.addRange(range); } document.execCommand("copy"); }; return <div> <button onClick={onClick}>copy</button> <div id="select-div"> <input /> <span>test2: 3</span><span>test3: 94</span></div> </div> };
3. 優(yōu)缺點(diǎn)
① 優(yōu)點(diǎn)
使用方便;
各種瀏覽器都支持;
② 缺點(diǎn)
只能將選中的內(nèi)容復(fù)制到剪貼板;
同步操作,如果復(fù)制/粘貼大量數(shù)據(jù),頁面會(huì)出現(xiàn)卡頓。
到此這篇關(guān)于JavaScript實(shí)現(xiàn)一鍵復(fù)制文本功能的示例代碼的文章就介紹到這了,更多相關(guān)JavaScript一鍵復(fù)制文本內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Web js實(shí)現(xiàn)復(fù)制文本到粘貼板
- 使用js實(shí)現(xiàn)復(fù)制功能
- 使用?JS?復(fù)制頁面內(nèi)容的三種方案
- JavaScript實(shí)現(xiàn)一鍵復(fù)制內(nèi)容剪貼板
- js復(fù)制文本到粘貼板(Clipboard.writeText())
- JS實(shí)現(xiàn)一鍵復(fù)制
- Vue中使用highlight.js實(shí)現(xiàn)代碼高亮顯示以及點(diǎn)擊復(fù)制
- js實(shí)現(xiàn)復(fù)制粘貼的兩種方法
- JavaScript+Html5實(shí)現(xiàn)按鈕復(fù)制文字到剪切板功能(手機(jī)網(wǎng)頁兼容)
- JS實(shí)現(xiàn)復(fù)制內(nèi)容到剪貼板功能兼容所有瀏覽器(推薦)
- js實(shí)現(xiàn)點(diǎn)擊復(fù)制當(dāng)前文本到剪貼板功能(兼容所有瀏覽器)
- 簡單實(shí)現(xiàn)兼容各大瀏覽器的js復(fù)制內(nèi)容到剪切板
- JavaScript 實(shí)現(xiàn)完美兼容多瀏覽器的復(fù)制功能代碼
- 兼容主流瀏覽器的JS復(fù)制內(nèi)容到剪貼板
- js實(shí)現(xiàn)的復(fù)制兼容chrome和IE
- 兼容所有瀏覽器的js復(fù)制插件Zero使用介紹
- 用js將內(nèi)容復(fù)制到剪貼板兼容瀏覽器
- js復(fù)制網(wǎng)頁內(nèi)容并兼容各主流瀏覽器的代碼
- JS復(fù)制內(nèi)容到剪切板的實(shí)例代碼(兼容IE與火狐)
- JS/FLASH實(shí)現(xiàn)復(fù)制代碼到剪貼板(兼容所有瀏覽器)
- 多瀏覽器兼容性比較好的復(fù)制到剪貼板的js代碼
- GWT中復(fù)制到剪貼板 js+flash實(shí)現(xiàn)復(fù)制 兼容性比較好
- 兼容IE與Firefox的js 復(fù)制代碼
- JavaScript 復(fù)制功能代碼 兼容多瀏覽器
- 至2023年最好用的兼容多瀏覽器的原生js復(fù)制函數(shù)copyText
相關(guān)文章
BootStrap 輪播插件(carousel)支持左右手勢滑動(dòng)的方法(三種)
這篇文章主要介紹了BootStrap 輪播插件(carousel)支持左右手勢滑動(dòng)的方法(三種)的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-07-07小程序雙頭slider選擇器的實(shí)現(xiàn)示例
這篇文章主要介紹了小程序雙頭slider選擇器的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03分享Javascript中最常用的55個(gè)經(jīng)典小技巧
這篇文章主要介紹了Javascript中最常用的55個(gè)經(jīng)典小技巧。需要的朋友可以過來參考下,希望對(duì)大家有所幫助2013-11-11基于JavaScript實(shí)現(xiàn)簡單的隨機(jī)抽獎(jiǎng)小程序
為了使抽獎(jiǎng)程序能夠無需配置平臺(tái)直接可以在任何一臺(tái)機(jī)器上運(yùn)行,開發(fā)工具和編譯運(yùn)行工具也能夠盡可能簡單(諸如text文本即可編輯,window系統(tǒng)自帶的瀏覽器即可編譯運(yùn)行的情況),決定嘗試使用javascript來做2016-01-01javascript實(shí)現(xiàn)的LI列表輸出,隔行同色的代碼
javascript實(shí)現(xiàn)的LI列表輸出,隔行同色的代碼...2007-10-10layer的prompt彈出框,點(diǎn)擊回車,觸發(fā)確定事件的方法
今天小編就為大家分享一篇layer的prompt彈出框,點(diǎn)擊回車,觸發(fā)確定事件的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-09-09js實(shí)現(xiàn)圖片從左往右漸變切換效果的方法
這篇文章主要介紹了js實(shí)現(xiàn)圖片從左往右漸變切換效果的方法,是比較典型的圖片漸變切換效果特效,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-02-02