1. 程式人生 > 實用技巧 >一分鐘學會自定義js複製貼上內容

一分鐘學會自定義js複製貼上內容

一篇簡易明瞭,一看就懂得知識部落格,話不多說 開擼。。。 需求如下: 複製:
我是一段話。
粘貼後:
我是一段話。
作者: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]