在网页中通过ctrl+c或者右键复制文字,如何将版权信息一并携带呢?来看看本文对你有没有帮助
首先我们要知道,在js中的ClipboardEvent事件即剪切板事件,其中包括三个事件(copy,paste,cut)。
浏览器兼容性
浏览器在copy,paste,cut事件中起了什么作用?
在浏览器中实现了操作系统的复制粘贴功能。 copy事件:会将复制的内容存入操作系统的剪切板中。 paste事件:会将操作系统的剪切板中的内容复制到页面的可编辑区域。 cut事件:如果剪切的是可编辑内容,会将内容剪切到操作系统的剪切板上,触发浏览器的cut事件;如果是不可编辑的内容,不会将内容剪切到操作系统的剪切板上,但是会触发cut事件。
浏览器如何能对copy,paste,cut事件中的数据进行操作?
浏览器的ClipboardEvent事件对象上有个clipboardData属性,ClipboardEvent.clipboardData 属性保存了一个DataTransfer对象,这个对象可用于: 描述哪些数据可以由 cut和copy事件处理器放入剪切板,通常通过调用 setData(format, data)方法; 获取由paste 事件处理器拷贝进剪切板的数据,通常通过调用getData(format) 方法。
如何在复制的内容中加入版权提示信息呢?
可以通过event.preventDefault()来阻止事件的默认行为,然后通过document.getSelection()获取页面选中内容,再通过DataTransfer对象上的方法,从系统剪切板写入数据。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>添加版权信息demo</title>
</head>
<body>
<div class="copy">
这段内容是我要复制的内容~~~~测试文案~~~~~
</div>
</body>
</html>
<script>
window.addEventListener('copy', function (event) {
//监听copy事件,阻止将选中内容复制到系统剪切板上。
event.preventDefault();
// document.getSelection()获取选中内容对象。
const selection = document.getSelection();
// selection 是一个 Selection 对象。如果想要将 selection 转换为字符串,可通过连接一个空字符串("")或使用 String.toString() 方法。
var selectContent = selection.toString();
var dealContent = selectContent + "复制文案有版权信息,不得商用!!!"
event.clipboardData.setData("text/plain", dealContent)
})
</script>