在我们浏览博客、论坛或者百度文库的时候,看到一些不错的信息时,我们往往会习惯的copy,但是copy下来就会出现版权信息一起copy下来。这种方法是不是很贱,不过对于发布者来说是很好的保护一种版权的方法,今天也就教大家如何实现这个方法。

在开发过程中应用到这个功能,博主就去百度了下,代码如下:

<script =”text/javascript”>
	//复制内容自动添加版权信息
	document.body.oncopy = function (){
		setTimeout(function (){
			var text = clipboardData.getData("text");
			if (text){
				text = text + "\r\n原文出自【grycheng前端博客】,转载请保留原文链接:"+location.href;
				clipboardData.setData("text", text);
			}
		},100)
	}
</script>

但是很可惜的是,博主通过浏览器测试IE6上测试通过,而在Firefox、Opera浏览器上没有效果,博主被生生的欺骗了,没办法,只能继续查找询问度娘。果然度娘很强大,高手在人间,终于有解决方案:

<script =”text/javascript”>
	//复制内容自动添加版权信息 
	var Sys = {}; 
	var ua = navigator.userAgent.toLowerCase(); 
	if( window.ActiveXObject ){ 
		document.body.oncopy=function(){ 
			event.returnValue = false; 
			var t=document.selection.createRange().text; 
			var s="\r\n原文出自[grycheng前端博客] 转载请保留原文链接:"+location.href; 
			clipboardData.setData('Text',t+'\r\n'+s); 
		} 
	} 
	else{ 
		function addLink(){ 
			var body_element = document.getElementsByTagName('body')[0]; 
			var selection; 
			selection = window.getSelection(); 
			var pagelink = " 原文出自[grycheng前端博客] 转载请保留原文链接:"+document.location.href; 

			var copytext = selection + pagelink; 
			var newdiv = document.createElement('div'); 
			newdiv.style.position='absolute'; 
			newdiv.style.left='-99999px'; 
			body_element.appendChild(newdiv); 
			newdiv.innerHTML = copytext; 
			selection.selectAllChildren(newdiv); 
			window.setTimeout(function(){ 
				body_element.removeChild(newdiv); 
			},0); 
		} 
		document.oncopy = addLink; 
	}
</script>

这个代码经测试,可以兼容,可能还有不足的地方,如有发现,可以在下方留言,共同探讨、改进。
最好说一点,注意编码问题,如发现复制的内容添加的版权信息乱码,可以自行检查编码问题。