禁用在网站上复制

时间:2011-12-03 03:30:51

标签: javascript jquery keyboard

我知道挫败世界上最先进的思想是不可能的,但我想在我的网站上放置一些障碍,让学生不要复制文本,并将该文本作为答案发布。 (如果他们手动输入,那没关系。)

由于跨浏览器的不一致,我非常害怕JavaScript。

鉴于我已经加载了jQuery并且尽可能使用jQuery,我该怎么做:

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

8 个答案:

答案 0 :(得分:10)

创建一个能够做到这一点的功能是多么令人生畏,你应该定位的是,清除剪贴板,即使用户按下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();">

虽然这仍然可以被击败....

答案 1 :(得分:4)

只需在关闭之前添加以下代码&lt; / HEAD&gt;  您网页的标记:

<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>

答案 2 :(得分:3)

如果您的文本特定于div,则可以在这些div之上放置透明div。其次,你可以使所有受保护的文本动态化,并将其注入到javascript中的div中,这将以编码形式存在 - 这将击败'view-source'。

答案 3 :(得分:3)

<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>

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

答案 4 :(得分:2)

我建议您使用:

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

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

这很简单,在我看来足以对付普通用户。说实话,没有办法完全阻止复制文本。人们可以随时使用Chrome开发者工具,并从那里复制动态加载的文本。

要获得更有效的保护,您应将oncopy放在<body>代码中,否则可以通过从外部<div>开始选择来复制文字。

答案 5 :(得分:1)

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

以下是示例代码:

<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>

答案 6 :(得分:1)

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

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

答案 7 :(得分:1)

使用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>

来源:Disable right click, copy, cut on web page using jQuery