2013-10-12 65 views
0

我有一个网页(轨道上的红宝石)与一些文本,我想保护内容,以阻止用户复制它(CTRL + C)。以XX保护内容?

当然,我有一些“保护”,但如果用户使用CTRL + A所有文本被选中它不够

$(function(){ 
    $('a.fancybox').fancybox(); 
    $('.prevent_select').disableSelection(); 
}); 


$.support.selectstart = "onselectstart" in document.createElement("div"); 
$.fn.disableSelection = function() { 
    return this.bind(($.support.selectstart ? "selectstart" : "mousedown") + 
     ".ui-disableSelection", function(event) { 
     event.preventDefault(); 
    }); 
}; 

。为了保护它,我想到了两种方法。但我想与您分享,以获得一些反馈。

  • 是否可以使用swf(Macromedia Flash)来显示文本? (有些创业板?)
  • 当网页检测到用户正在使用ctrl + c时,是否可以总是“删除”用户缓冲区?
  • 您有其他想法吗?

我非常感谢您的反馈和帮助。

+1

这不值得去尝试。 一方面,如果您使用Flash或图像而不是纯html,那么残疾人或谷歌用户将无法阅读它。这对你不好。另一方面,试图用javascript或透明图像来防止copy'n'paste是无用的。内容已经在用户的计算机上,他可以通过查看源代码或禁用JavaScript来提取它。这对普通用户来说是烦人的,而那些想要强化你的语境的人可以随时加以使用。 – spickermann

+1

这是不可能的。如果你希望用户能够阅读文本,那么他需要能够看到它。即将其显示在屏幕上。如果它显示在屏幕上,可以通过各种方式来抓取它:读取屏幕缓冲区,制作屏幕照片,检查笔和纸并写下来。你无法阻止这一点。 –

回答

0

您可以使用画布绘制文本。示例:http://jsfiddle.net/ExWei/hZmM2/

您可以在文本区域放置透明图像。 (使用CSS)

脚本用于阻挡CTRL - üCTRL - ÇCTRL -

document.ondragstart = test; 
document.onselectstart = test; 
document.oncontextmenu = test; 
function test() 
{ 
    return false; 
} 

document.oncontextmenu; 

function catchControlKeys(event) 
{ 
    var code=event.keyCode ? event.keyCode : event.which ? event.which : null; 
    if (event.ctrlKey) 
    { 
     // Ctrl+U 
     if (code == 117) return false; 
     if (code == 85) return false; 
     // Ctrl+C 
     if (code == 99) return false; 
     if (code == 67) return false; 
     // Ctrl+A 
     if (code == 97) return false; 
     if (code == 65) return false; 
    } 
} 

对于使用此脚本变化

<body> 

<body onkeypress="return catchControlKeys(event)">