不少技術博客有這樣的處理,當我們復制代碼的時候,會自動加上一段本信息版權為XXXX,這是怎么實現的呢?
其實實現的方式很簡單,可以在我的網站頁面上綁定一個copy事件,當你復制文章內容的時候,自動在剪切板文字后面加上一段版權聲明。
我這邊是沒有加這些的,代碼什么的想復制就復制好了。大家都是靠代碼技能吃飯的,可以體會寫代碼的不易,相信一定會尊重知識勞動成果——保留出處等版權信息的。
效果示例 :

代碼示例:
<body>
<p>是的你沒有看錯, 我還是在路邊吃快餐, 在北京市的三里屯, 在上海市的外灘</p>
</body>
<script>
// 監聽整個網頁的copy(復制)事件
document.addEventListener('copy', function (event) {
// clipboardData 對象是為通過編輯菜單、快捷菜單和快捷鍵執行的編輯操作所保留的,也就是你復制或者剪切內容
let clipboardData = event.clipboardData || window.clipboardData;
// 如果未復制或者未剪切,則return出去
if (!clipboardData) { return; }
// Selection 對象,表示用戶選擇的文本范圍或光標的當前位置。
// 聲明一個變量接收 -- 用戶輸入的剪切或者復制的文本轉化為字符串
let text = window.getSelection().toString();
if (text) {
// 如果文本存在,首先取消文本的默認事件
event.preventDefault();
// 通過調用常clipboardData對象的 setData(format, data) 方法;來設置相關文本
// setData(format, data);參數
// format
// 一個DOMString 表示要添加到 drag object的拖動數據的類型。
// data
// 一個 DOMString表示要添加到 drag object的數據。
clipboardData.setData('text/plain', text + '\n\n張無忌 版權所有');
}
});
</script>
以上代碼相關參數詳解:
element.addEventListener(type, handle, false);
type: 事件觸發類型,如click,keypress等等,下面我們詳細的講講事件類型!!
handle:事件處理函數,事件出發后,定義可能發生的變化!!
false: 表示事件冒泡模型,一般來說都是false。

clipboardData
clipboardData 屬性保存了一個 DataTransfer 對象(用戶剪切板的內容),這個對象可用於:
format數據類型有:text/plain,text/uri-list。data表示要添加到剪切板的數據。
- 獲取由
paste事件處理器拷貝進剪切板的數據,通常通過調用getData(format)方法

event.preventDefault() 方法阻止元素發生默認的行為。
例如:
- 當點擊提交按鈕時阻止對表單的提交
- 阻止以下 URL 的鏈接

如果有任何疑問即可留言反饋,會在第一時間回復反饋,謝謝大家
