本文是js代码适用于任何后端和前端的网页代码下面分享两种代码:这个对于原创文章和作者有稍微的保护作用,但是在大环境下作用不是很大。还是有一定的作用。
一、可以匹配原文链接的代码
<script type="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=" 原文链接:"+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 = " 原文链接:"+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>
2、不带原文链接可以自定义作者和地址的代码(经过查找和测试发现此代码真实有效,利用的是javascript的oncopy事件)
<script> /**/ function setClipboardText(event){ event.preventDefault();//阻止元素发生默认的行为(例如,当点击提交按钮时阻止对表单的提交)。 var node = document.createElement('div'); //对documentfragment不熟,不知道怎么获取里面的内容,用了一个比较笨的方式 node.appendChild(window.getSelection().getRangeAt(0).cloneContents()); //getRangeAt(0)返回对基于零的数字索引与传递参数匹配的选择对象中的范围的引用。对于连续选择,参数应为零。 var htmlData = '<div>' + node.innerHTML + '商业转载请联系作者获得授权,非商业转载请注明出处。<br />' + '作者:qi70博客<br />链接:https://www.qi70.com/<br />' + '来源:徐州智奇网络<br /><br />' + '</div>'; var textData = window.getSelection().getRangeAt(0) + '商业转载请联系作者获得授权,非商业转载请注明出处。\n' + '作者:qi70博客\n' + '来源:徐州智奇网络\n\n'; if(event.clipboardData){ event.clipboardData.setData("text/html", htmlData); //setData(剪贴板格式, 数据) 给剪贴板赋予指定格式的数据。返回 true 表示操作成功。 event.clipboardData.setData("text/plain",textData); } else if(window.clipboardData){ //window.clipboardData的作用是在页面上将需要的东西复制到剪贴板上,提供了对于预定义的剪贴板格式的访问,以便在编辑操作中使用。 return window.clipboardData.setData("text", textData); } }; document.addEventListener('copy',function(e){ setClipboardText(e); }); </script>
这种方法不能完全杜绝抄袭。但是相比禁止右键和禁止复制对于用户体验好了一些。在网站运营和seo中比较推荐这种用法。。对于用户来说也是一种较好的体验