禁用在网站上复制

Disable Copying on a website

本文关键字:复制 网站      更新时间:2023-09-26

我知道挫败世界上最先进的思想是不可能的,但我想在我的网站上设置最轻微的障碍,防止我的学生从中复制文本并将其作为答案发布。(如果他们手工打字,那没关系(。

我只是非常害怕JavaScript,因为跨浏览器不一致。

既然我已经加载了jQuery,并且尽可能喜欢使用jQuery,我该如何:

  1. 禁用Ctrl+c
  2. 禁用菜单编辑复制

创建一个能做到这一点的函数是多么令人生畏,你应该以清除剪贴板为目标,这样即使用户按Ctrl+C,也不会将任何内容复制到剪贴板中,像这样的简单函数也能做到:

<script language="javascript">
    function clearData(){
        window.clipboardData.setData('text','') 
    }
    function cldata(){
        if(clipboardData){
            clipboardData.clearData();
        }
    }
    setInterval("cldata();", 1000);
</script>

<body ondragstart="return false;" onselectstart="return false;"  oncontextmenu="return false;" onload="clearData();" onblur="clearData();">

尽管这仍然可以被击败。。。。

只需在关闭前添加以下代码<头部>您的网页标签:

<script>
    function killCopy(e){
        return false;
    }
    function reEnable(){
        return true;
    }
    document.onselectstart=new Function ("return false");
    if (window.sidebar){
        document.onmousedown=killCopy;
        document.onclick=reEnable;
    }
</script>

我建议您使用:

<div oncopy="return false;">Here you have protected text</div>

可以在此处找到对此方法的支持:http://help.dottoro.com/ljwexqxl.php

它很简单,在我看来对普通用户来说已经足够了。老实说,没有任何选项可以完全防止复制文本。例如,人们总是可以使用Chrome开发工具,甚至可以从那里复制动态加载的文本。

为了获得更有效的保护,您应该将oncopy放在<body>标记中,否则可以通过从外部<div>开始选择来复制文本。

如果您在特定的div中有文本,您可以在这些div之上放置一个透明的div。其次,您可以使所有受保护的文本都是动态的,并将其从javascript注入div,其中is将以编码形式存在——这将击败"视图源代码"。

<script type="text/javascript" language="javascript">
     $(function() {
            $(this).bind("contextmenu", function(e) {
                e.preventDefault();
            });
        }); 
</script>
<script type="text/JavaScript"> 
function killCopy(e){ return false } 
function reEnable(){ return true } 
document.onselectstart=new Function ("return false"); 
if (window.sidebar)
{ document.onmousedown=killCopy; 
document.onclick=reEnable; } 
</script>

//通过使用以上代码,您的右键单击将被禁用,并且没有人可以复制您的页面内容

一个简单有效的解决方案-绑定到"复制"事件并阻止它。您还可以设置将复制(稍后由用户粘贴(的文本。

document.addEventListener('copy', function (e){
    e.preventDefault();
    e.clipboardData.setData("text/plain", "Do not copy this site's content!");
})

使用jQuery可以很容易地在网页上禁用文本、复制、右键单击。下面是可以轻松完成此任务的简单jQuery代码片段:

<script type="text/javascript">
// Disable right click on web page
$("html").on("contextmenu",function(e){
    return false;
});
// Disable cut, copy and paste on web page
$('html').bind('cut copy paste', function (e) {
     e.preventDefault();
});
</script>

来源:禁用右键点击,复制,使用jQuery剪切网页

要实现这一点,您需要在网页上阻止鼠标点击和上下文菜单点击。

这是一个示例代码:

<script language="JavaScript1.2">
    var msgpopup="COPYING CONTENT IS PROHIBITED";
    function handle(){
          if(toShowMessage== "1") alert(message);
              if(closeSelf== "1") self.close();
              return false;
    }
    function mouseDown() {
         if (event.button == "2" || event.button == "3"){handle();}
    }
    function mouseUp(e) {
         //if (document.layers || (document.getElementById && !document.all)){
              if (e.which == "2" || e.which == "3"){ handle();}
         //}
    }
    document.onmousedown=mouseDown;
    document.onmouseup=mouseUp;
    document.oncontextmenu=new Function("alert(msgpopup);return false")
    </script>

您可以将文本放在一个属性为只读的输入标记中,并防止用户使用JS进行复制。所以,用户甚至无法从开发人员菜单中复制它。