一分鐘學會自定義js複製貼上內容
阿新 • • 發佈:2020-12-01
一篇簡易明瞭,一看就懂得知識部落格,話不多說 開擼。。。
需求如下:
複製:
我是一段話。粘貼後:
我是一段話。
作者:xxx
連結:xxx
來源:部落格園
四個知識點實現:
1.element.oncopy,用來捕獲複製事件; 2.window.getSelection()獲取使用者複製的內容 1)它返回一個**Selection物件**; 2)在IE8及以下的瀏覽器上不支援; 3)我們最終要獲取的是選中區域的純文字,而不是一個Seletion物件。因此需要將Selection物件轉換成字串,可以通過拼接一個空字串或使用String.toString()方法。 3.clipboardData的setData()方法將資訊寫入剪貼簿; 該物件有三個方法: getData()方法接受一個format引數,即要取得的資料的格式。資料型別有:text/plain、text/uri-list。 setData()方法授受兩個引數,一個是format引數,代表資料型別。第二個引數代表要放入剪貼簿中的文字內容。這裡我們可以指定format引數為text/plain,代表純文字。 clearData()方法接受一個可選引數format,代表要刪除的資料型別。如果此引數為空字串或未提供,則刪除所有型別的資料。 4.阻止掉預設複製事件;整體程式碼如下:
<script> document.oncopy = function (e) { // 獲取選區物件 let selObj = window.getSelection();// IE8及更早不支援window.getSelection if (typeof selObj == 'undefined') return false; // 獲取clipboardData物件 // Chrome\Safari\Firefox瀏覽器中,這個物件是event物件的屬性// IE瀏覽器中,它是window物件的屬性 let clipboardData = e.clipboardData || window.clipboardData; // 獲取選區文字內容 let selectedText = selObj + ''; let copytext = selectedText + '\n\n\n' + '作者:XXX\n' + '連結:' + location.href + '\n' + '來源:部落格園\n' + '著作權歸作者所有。商業轉載請聯絡作者獲取授權,非商業轉載請註明出處。'; clipboardData.setData('text/plain', copytext); // 取消預設的複製事件 return false; // e.preventDefault()亦可 } </script>
-------------------------------------------------------------------------------
如有錯誤,歡迎評論指正、共同提高。[握手]
歡迎轉載,轉載請註明:轉載自[http://www.cnblogs.com/juneling]