一個高亮選擇后自動復(fù)制然后鼠標(biāo)中鍵無格式粘貼的代碼
以下是一個基于JavaScript的代碼示例,實現(xiàn)了在選擇文本后自動復(fù)制,并通過鼠標(biāo)中鍵無格式粘貼的功能來去除格式:
document.addEventListener('mouseup', function(e) {
? var selectedText = window.getSelection().toString();
? if (selectedText !== '') {
? ? // 創(chuàng)建一個臨時的 textarea 元素
? ? var tempTextarea = document.createElement('textarea');
? ? tempTextarea.value = selectedText;
? ? document.body.appendChild(tempTextarea);
? ? // 選中文本并復(fù)制
? ? tempTextarea.select();
? ? document.execCommand('copy');
? ? // 從 body 中移除臨時元素
? ? document.body.removeChild(tempTextarea);
? }
});
document.addEventListener('mousedown', function(e) {
? // 如果按下的是中鍵
? if (e.button === 1) {
? ? // 獲取剪貼板中的純文本內(nèi)容
? ? var clipboardData = e.clipboardData || window.clipboardData;
? ? var pastedText = clipboardData.getData('text/plain');
? ? // 在當(dāng)前光標(biāo)位置插入純文本
? ? var selection = window.getSelection();
? ? var range = selection.getRangeAt(0);
? ? var textNode = document.createTextNode(pastedText);
? ? range.deleteContents();
? ? range.insertNode(textNode);
? ? // 設(shè)置新的光標(biāo)位置
? ? range.setStartAfter(textNode);
? ? range.setEndAfter(textNode);
? ? selection.removeAllRanges();
? ? selection.addRange(range);
? ? // 阻止默認(rèn)粘貼行為
? ? e.preventDefault();
? }
});
在這個代碼中,我們通過添加兩個事件監(jiān)聽器來實現(xiàn)功能:
mouseup 事件監(jiān)聽器:當(dāng)用戶在頁面中選擇文本并松開鼠標(biāo)時,我們將選中的文本復(fù)制到剪貼板中。
mousedown 事件監(jiān)聽器:當(dāng)用戶在頁面中按下鼠標(biāo)時,如果按下的是中鍵,則我們從剪貼板中獲取純文本內(nèi)容,并在當(dāng)前光標(biāo)位置插入該文本。
需要注意的是,由于瀏覽器的安全策略,我們無法直接訪問剪貼板中的內(nèi)容,而只能通過用戶的操作來觸發(fā)剪貼板事件并獲取內(nèi)容。因此,在上面的代碼中,我們使用了 e.clipboardData.getData
('text/plain') 來獲取剪貼板中的純文本內(nèi)容。同時,我們也需要在代碼中阻止默認(rèn)的粘貼行為,以避免將帶有格式的內(nèi)容粘貼到頁面中。