平時我們在復制網頁上面代碼到控制台調試時,有時會出現復制過來的代碼后面加上了一下描述信息(作者、版權等信息),每次需要刪除才能運行,所以今天看看怎么能保證我們粘貼的代碼不攜帶這些信息呢?
(function() { document.addEventListener('copy',(e)=>{ e.preventDefault(); e.stopPropagation(); console.info('觸發復制事件'); /** 返回一個Selection對象,表示用戶選擇的文本范圍或光標的當前位置 Selection.getRangeAt返回一個包含當前選區內容的區域對象 */ let text = window.getSelection().getRangeAt(0); let node = document.createElement('div'); // cloneContents方法把范圍(Range)的內容復制到一個DocumentFragment對象 node.appendChild(window.getSelection().getRangeAt(0).cloneContents()); /** ClipboardEvent.clipboardData 屬性保存了一個 DataTransfer 對象,這個對象可用於: 描述哪些數據可以由 cut 和 copy 事件處理器放入剪切板,通常通過調用 setData(format, data) 方法; 獲取由 paste 事件處理器拷貝進剪切板的數據,通常通過調用 getData(format) 方法 */ if(e.clipboardData){ e.clipboardData.setData("text/html", node.innerHTML); e.clipboardData.setData("text/plain",text); }else if(window.clipboardData){ return window.clipboardData.setData("text", text); } }) }());