禁用网页中的复制/粘贴

时间:2010-06-11 06:47:53

标签: javascript html

如何在网页中禁用复制粘贴功能。确切地说,我不希望我的用户从我的网站复制任何信息并将其用于个人目的。关于同一主题的上一个问题没有给出足够的解释。 onselect和ondrag不起作用。请帮忙。

16 个答案:

答案 0 :(得分:23)

  

我不希望我的用户复制任何内容   来自我的网站和使用的信息   它们用于个人目的

没有办法做到这一点。如果有人真的想要你的信息,他们就能得到它。

你可能会因为使用javascript或其他任何东西禁用某些功能而给他们一点点麻烦......但你只会给那些对技术不太了解的人带来麻烦。通常这些人甚至都不想复制你的数据。谁是谁,将找到一种方法。

答案 1 :(得分:7)

如果您在线发布信息,则应在页面上明确指出您的版权声明(或指明您在其下发布内容的许可类型)。请查阅并阅读您所在地区的版权法,以了解其作用和不允许的内容 - 例如,在英国,有关于制作受版权保护材料的个人副本以及使用受版权保护的部分作品进行严格审查或模仿的规定。

您无法阻止人们复制您网页上的内容。你可以让他们更难做到 - 但这会对你的网页产生负面影响。诸如阻止鼠标左键单击,拦截键盘事件或将整篇文章转换为图像等技术只会降低您网站的可用性。

如果您的网站上有文字信息,即使您已经停止了我复制图像的其他方法,我也可以重新输入。如果你有一个图像并且你已经设法锁定其他所有内容,我仍然可以进行屏幕抓取(更不用说我的浏览器将所有图像缓存在我的机器上的临时文件夹中)。

您的内容偏执会影响许多建立网站的人 - 但互联网背后的想法是用于分享信息。

答案 2 :(得分:4)

只需将以下代码添加到网页的HEAD标记中即可:

<script type="text/JavaScript">
//courtesy of BoogieJack.com
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>

答案 3 :(得分:2)

说实话,如果您不希望人们使用您网站上的任何信息,那么您就无法将其放在那里。如果你阻止他们复制和粘贴信息,他们仍然可以截取它的截图,输入并以这种方式保存数据。我知道这不是你正在寻找的答案,但这只是要考虑的事情。

(我之所以这样做是因为我无法发表评论)。

答案 4 :(得分:2)

算了。无法在浏览器中阻止这些功能。你可以做的“最好的”是在图像或Flash电影中呈现你的数据 - 实现不可思议,缓慢,不切实际,可怕,并且使用OCR软件也是可以避免的。

如果所有其他方法都失败了,用户只需手动制作屏幕截图或输入数据。

如果您向用户提供数据,则必须考虑到他们可以复制数据。故事结局。

使用法律威胁来防止您的内容,而不是技术手段。

答案 5 :(得分:2)

默认情况下,Chrome和Firefox会禁用右键菜单。您必须在Firefox中手动编辑about:config中的条目以防止它被阻止,这不是您可以强制访问者执行的操作。

关于IE,你可以修改你的BODY标签:

<body onContextMenu="return false">

这会阻止右键单击上下文菜单。

除此之外,下一个最好的步骤是创建文本图像,将其放在.swf(flash)文档中,并指向页面以将.swf作为页面加载。这将导致所有浏览器在右键单击时显示Flash上​​下文菜单,并将阻止简单的复制/粘贴工作。

我同意之前的回复,无论使用何种方法,任何用户都可以使用他们的Print Screen键,将图像粘贴到Paint(或其他程序)中,保存并使用OCR来抓取文本。

答案 6 :(得分:2)

如果您在前端采取这些措施,则需要重新考虑您的策略。你想要做的事情本质上是错误的。

作为网页的访问者,拉这样的东西只会让我烦恼 - 我最终会弄清楚你做了什么并绕过它。也就是说,如果您的目标是限制不耐烦或非技术用户,我最近发现this particular method可能非常有效。谨慎行事......

<div class="text">
  <p>Hello, world! Sadly, <a href="#">I won't work</a>.</p>
  <img alt="I can't be dragged or saved either :(" src="tree.png"> 
  <div class="preventSelect"></div>
</div>

...和CSS:

.text {
  position: relative;
  width: auto; /* can be fixed as well (ie 400px) */
  width: auto; /* can be fixed as well (ie 400px) */
  z-index: 0;
}

.preventSelect {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 1;
}

此方法的明显缺点是用户无法与我们preventSelect中div内的任何内容进行交互。这包括链接,按钮,图像等。

除非绝对必要,否则请不要使用此项。坦率地说,这对所有人来说都是痛苦的。

答案 7 :(得分:1)

无法确保网站免受复制。有一些技术可以使它变得更加困难,但是一旦用户在屏幕上显示信息就已经太晚了。例如,如果可以某种方式禁用屏幕截图功能,他可以用相机拍照。

禁用javascript功能(f.e.快捷方式)并非在所有浏览器中都有效,用户可能会禁用javascript。

使用curl等程序可以抓取网页上的所有信息。

您可以做的最好的事情是将您呈现的所有信息都放入图像中。

答案 8 :(得分:1)

lyrics.com的开发人员所做的是将事件附加到document.body.oncontextmenudocument.onselectstartdocument.body.onkeydown以禁用浏览器将采取的操作。

可以像

一样简单地完成
<body oncontextmenu="return false" onselectstart="return false"
      onkeydown="if ((arguments[0] || window.event).ctrlKey) return false">

你需要这三个人; oncontextmenu基本上支配了正确的点击次数,onselectstart涵盖了使用鼠标进行拖动选择,以及onkeydown Ctrl键事件(例如某人点击 Ctrl + < kbd> A , Ctrl + C 复制整页。)

我强烈建议您不要这样做。它会杀死可用性并使合法用户感到沮丧(例如,设置了某些键映射的人,或使用“返回”和“使用”的人从上下文菜单重新加载,你不必担心的那些即使是最轻微的也不会受到阻碍。坦率地说,你的内容并不像你想象的那么特别,或者你不会通过网络浏览器为任何输家服务。有价值的信息不会上线。

如前所述,所有return false内容都不具备可执行性。而且因为我发现页面特别令人气愤, 促使我弹出一个控制台并剖析他们所做的事情,并分离事件处理程序,这样我就可以复制任何我喜欢的东西,甚至不会得到他们的宝贵点击跟踪数据。但实际上,所有人都要做的就是禁用JavaScript。

阻止人们从互联网上复制文本的唯一方法是让它远离互联网。任何其他方式注定要失败,因为你自己正在将副本交给他们作为向他们提供的行为的一部分

答案 9 :(得分:0)

您无法禁用它..用户可以查看您的网页来源,因此文本始终可用。如果您将点击处理程序设置为禁用右键单击,则可以关闭javascript ..

你可以尝试做的最好的事情是让人们不方便阻止它们,但你永远不能阻止它们。

答案 10 :(得分:0)

<script type="text/javascript">

function md(e) 
{ 
  try { if (event.button==2||event.button==3) return false; }  
  catch (e) { if (e.which == 3) return false; } 
}
document.oncontextmenu = function() { return false; }
document.ondragstart   = function() { return false; }
document.onmousedown   = md;

</script>
<br />

答案 11 :(得分:0)

您可以使用以下代码停止复制粘贴

<body ondragstart="return false" onselectstart="return false">

答案 12 :(得分:0)

尝试添加此CSS:

#content {
    pointer-events: none;
}

这将停用鼠标操作,因此也将复制粘贴。

答案 13 :(得分:0)

禁用剪切、复制和粘贴选项。

<script language="text/javascript">
    // disable portal cut copy and paste options.
    $('body').bind('cut copy paste', function (e) {
            e.preventDefault();
    });

</script>

但我更喜欢在本地主机上启用此选项。

<script language="text/javascript">
    // disable portal cut copy and paste options.
    $('body').bind('cut copy paste', function (e) {

       // enable only localhost
       if (location.hostname === "localhost" || location.hostname === "127.0.0.1") 
        {
            return;
        }
        e.preventDefault();

    });

</script>

答案 14 :(得分:-1)

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

答案 15 :(得分:-2)

我建议禁用右键单击。

<script language="text/javascript">
    var message = "Not allowed."; 
    function rtclickcheck(keyp){ 
        if (navigator.appName == "Netscape" && keyp.which == 3){    
            alert(message); return false; 
        } 
        if (navigator.appVersion.indexOf("MSIE") != -1 && event.button == 2) {
            alert(message);     
            return false;
        }
    } 
    document.onmousedown = rtclickcheck;
</script>