首页 技术教程

⏳ 浅蓝最后一次降雪:2020 年 10 月 22 日


简介

随着信息的越来越多,窃取别人的劳动果实也似乎屡见不鲜,在这里简单介绍一下防复制或者复制后自动带版权的方法。

当然,本站“勿埋我心”不打算这般使用,因为这或多或少会影响用户的体验。而且正如那句,只防君子,不防小人。有些东西是无法完全杜绝的。

一、首先通用的防复制办法,基本上所有网站都通用的代码。把代码加入头部或者底部模板文件中即可

<script>
document.oncontextmenu=function(){return false}//屏蔽右键菜单
document.onpaste=function(){return false}//屏蔽粘贴
document.oncopy=function(){return false}//屏蔽复制
document.oncut=function(){return false}//屏蔽剪切
document.onselectstart=function(){return false}//屏蔽选择
</script>

上面的代码包括了屏蔽右键菜单、屏蔽粘贴、屏蔽复制、屏蔽剪切、屏蔽选择。网站文章页面有了这些复制就困难很多了,只需要把代码放在对应的页面就行了。以上这种代码和日常所用的锁是一样的,只防君子,不防小人。

二、文章想让人家复制,但是提醒版权方法

把下面代码加入网站头部或者底部模板文件中即可

<!-- 复制内容弹窗版权提醒 -->
<script type="text/javascript">
    document.body.oncopy=function(){alert("复制成功!撰文不易,转载请务必保留勿埋我心原文链接,谢谢合作!");}
</script>

三、复制自动带版权代码:

    <script>
        function setClipboardText(event){ 
            event.preventDefault();//阻止元素发生默认的行为(例如,当点击提交按钮时阻止对表单的提交)。
            var node = document.createElement('div');
            //对documentfragment不熟,不知道怎么获取里面的内容,用了一个比较笨的方式
            node.appendChild(window.getSelection().getRangeAt(0).cloneContents());
            //getRangeAt(0)返回对基于零的数字索引与传递参数匹配的选择对象中的范围的引用。对于连续选择,参数应为零。
            var htmlData = '<div>著作权归作者所有。<br />' 
                            + '商业转载请联系作者获得授权,非商业转载请注明出处。<br />'
                            + '作者:勿埋我心<br />链接:https://www.qian.blue<br />'
                            + '来源:segmentfault<br /><br />' 
                            + node.innerHTML 
                            + '</div>';
            var textData = '著作权归作者所有。\n' 
                            + '商业转载请联系作者获得授权,非商业转载请注明出处。\n'
                            + '作者:勿埋我心\n链接:https://www.qian.blue\n'
                            + '来源:segmentfault\n\n' 
                            + window.getSelection().getRangeAt(0);
            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);  
            }  
        };  
        var answer = document.getElementById("answer");
        answer.addEventListener('copy',function(e){
            setClipboardText(e);
        });
    </script>



文章评论

目录