当访客复制页面内容达到一定长度时,可使用此方法加上简单的版权说明。
例如:
在网站复制长度大于42的文本时自动加上这样的版权声明:
实现原理:
监听copy事件
使用 window.getSelection() 获取选中的文本
使用 clipboardData.setData 操作剪贴板的内容
代码实现:
document.body.addEventListener('copy', function (e) {
if (window.getSelection().toString()) {
setClipboardText(e);
// alert('商业转载请联系作者获得授权,非商业转载请注明出处,谢谢合作。');
}
});
function setClipboardText(event) {
var clipboardData = event.clipboardData || window.clipboardData;
if (clipboardData) {
event.preventDefault();
var htmlData = ''
+ '著作权归作者所有。<br>'
+ '商业转载请联系作者获得授权,非商业转载请注明出处。<br>'
+ '作者:作者名<br>'
+ '链接:' + window.location.href + '<br>'
+ '来源:指定网址等<br><br>'
+ window.getSelection().toString();
var textData = ''
+ '著作权归作者所有。\n'
+ '商业转载请联系作者获得授权,非商业转载请注明出处。\n'
+ '作者:作者名\n'
+ '链接:' + window.location.href + '\n'
+ '来源:指定网址等\n\n'
+ window.getSelection().toString();
clipboardData.setData('text/html', htmlData);
clipboardData.setData('text/plain',textData);
}
}
已知问题
iOS Safari 不兼容 clipboardData.setData() 方法,所以在 iOS Safari 上无效
补充说明:原帖地址 https://www.anotherhome.net/