js?剪切、復(fù)制、粘貼功能實(shí)現(xiàn)
針對(duì)現(xiàn)代瀏覽器實(shí)現(xiàn)(Navigator.clipboard)
Navigator.clipboard API可以用來(lái)訪問(wèn)系統(tǒng)剪貼板,可以實(shí)現(xiàn)【剪切、復(fù)制、粘貼】功能。該 API 被設(shè)計(jì)用來(lái)取代使用 document.execCommand() 的剪貼板訪問(wèn)方式,不兼容 IE。
使用 Navigator.clipboard API時(shí)會(huì)彈出用戶授權(quán)彈窗。如果用戶沒(méi)有授予權(quán)限,則不允許讀取或更改剪貼板內(nèi)容。
let clipBoard = navigator.clipboard;
// 寫(xiě)入文本至操作系統(tǒng)剪貼板
clipBoard.writeText('你好').then(() => {
this.$message.success('復(fù)制成功!')
})
// 寫(xiě)入任意數(shù)據(jù)(比如圖片)至操作系統(tǒng)剪貼板用 clipBoard.write()
// 從剪貼板讀取文本
clipBoard.readText().then(clipText => {
console.log(clipText);
})
// 從剪貼板讀取數(shù)據(jù)(比如圖片)用 clipBoard.read()針對(duì)舊版本瀏覽器實(shí)現(xiàn)(document.execCommand)
document.execCommand 針對(duì)可編輯內(nèi)容區(qū)域提供了很多有用的 API,包括其中的【剪切、復(fù)制、粘貼】功能。
MDN 寫(xiě)到 document.execCommand 方法已廢棄。
document.execCommand 的復(fù)制有個(gè)前提,必須先選中內(nèi)容,但有時(shí)候我們要實(shí)現(xiàn)的效果是沒(méi)有選中這個(gè)動(dòng)作的,比如在手機(jī)號(hào)后面有個(gè)“復(fù)制”按鈕,點(diǎn)擊按鈕就直接復(fù)制了手機(jī)號(hào),這里我們有2種方法實(shí)現(xiàn):
方法1:在 body 動(dòng)態(tài)追加一個(gè)隱藏的文本域,再用 select() 方法選中里面的內(nèi)容,接著 document.execCommand('copy') 進(jìn)行復(fù)制。
function copyText (text) {
$('body').append(`<textarea id="iclip-container" value="${text}">${text}</textarea>`);
$('#iclip-container').select();
if (document.execCommand('copy', false, null)) {
$('#iclip-container').remove();
alert('復(fù)制成功!')
}
}方法2:監(jiān)聽(tīng) copy 事件,在事件回調(diào)里添加要復(fù)制的內(nèi)容。
function copyText (text) {
const copy = function(event) {
let clipboardData = event.clipboardData || window.clipboardData;
clipboardData.setData('text/plain', text);
event.preventDefault();
};
document.addEventListener('copy', copy);
document.execCommand('copy');
document.removeEventListener('copy', copy);
this.$message.success('復(fù)制成功!');
},剪切、復(fù)制、粘貼事件
可以給元素綁定 cut、copy、paste 事件監(jiān)聽(tīng)剪切、復(fù)制、粘貼行為。
// 可以監(jiān)聽(tīng) cut 事件對(duì)剪切內(nèi)容進(jìn)行修改
const source = document.querySelector('div.source');
source.addEventListener('cut', (event) => {
const selection = document.getSelection();
event.clipboardData.setData('text/plain', selection.toString().toUpperCase());
selection.deleteFromDocument();
event.preventDefault();
});到此這篇關(guān)于js 剪切、復(fù)制、粘貼功能實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)js 剪切、復(fù)制、粘貼內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
優(yōu)化 JavaScript 代碼的方法小結(jié)
客戶端腳本能讓你的應(yīng)用更加地動(dòng)態(tài)和活躍, 但是瀏覽器對(duì)代碼的解析可能造成效率問(wèn)題, 而這種性能差異在客戶端之間也不盡相同。 這里我們討論和給出一些優(yōu)化你的 JavaScript 代碼的提示和最佳實(shí)踐。2009-07-07
添加一個(gè)以前寫(xiě)的table的spliter給大家
添加一個(gè)以前寫(xiě)的table的spliter給大家...2007-01-01
微信小程序?qū)崿F(xiàn)簡(jiǎn)單的購(gòu)物車功能
這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)簡(jiǎn)單的購(gòu)物車功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-07
查找JS對(duì)象中是否包含某個(gè)變量的6種方法總結(jié)
在JavaScript中,我們可以通過(guò)多種方法來(lái)判斷一個(gè)數(shù)組中是否包含某個(gè)特定的值,這篇文章主要給大家介紹了關(guān)于如何查找JS對(duì)象中是否包含某個(gè)變量的6種方法,需要的朋友可以參考下2024-08-08
一文讓你徹底弄懂js中undefined和null的區(qū)別
JavaScript是一門動(dòng)態(tài)類型語(yǔ)言,元素除了表示存在的空值外,還有可能根本就不存在,這就是undefined存在的原因,這篇文章主要給大家介紹了關(guān)于undefined和null區(qū)別的相關(guān)資料,需要的朋友可以參考下2022-03-03
TypeScript中declare關(guān)鍵字的具體使用
declare關(guān)鍵字用來(lái)告訴編譯器,某個(gè)類型是存在的,可以在當(dāng)前文件中使用,本文主要介紹了TypeScript中declare關(guān)鍵字的具體使用,感興趣的可以了解一下2023-10-10
Canvas?drawImage方法實(shí)現(xiàn)圖片壓縮詳解
這篇文章主要為大家介紹了Canvas?drawImage方法實(shí)現(xiàn)圖片壓縮詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11

