复制保护<pre> <code></code></pre>

时间:2012-08-13 22:05:12

标签: javascript jquery copy-paste

我正在开展一个教育项目,并希望无法复制和粘贴代码,以便学生必须自己完成。

我想要做的是复制保护<pre> <code> </code> </pre>区域。这有可能与jQuery?我的意思是阻止 ctrl + c 键或类似的东西。

6 个答案:

答案 0 :(得分:5)

将代码渲染为图像并显示该图像。

答案 1 :(得分:4)

您可以使用此CSS禁用选择:

pre {
    -webkit-touch-callout: none;
    -webkit-user-select: none;
    -khtml-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
}

很难复制你无法选择的内容。

然而,正如评论所提到的那样,有很多方法......

这是DEMO

答案 2 :(得分:3)

结合此处的其他技术,您可以对内容进行HTML编码,以便“查看源”变得不方便使用。例如:

​&#x48;&#x65;​​​​​​​​​​​​​​​​​​​​​&#x6c;&#x6c;&#x6f;&#x20;​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​&#x57;&#x6f;&#x72;&#x6c;&#x64;​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

呈现为

Hello World

如果您的学生编写程序将HTML编码版本中的十六进制字符解码为纯ASCII,请为其提供额外的功劳。 :)

答案 3 :(得分:2)

不可能。您可以将其显示在Flash影片中,或者将预渲染图像切片为多个较小的部分以防止OCR,但是明显的解决方法是采用屏幕捕获和OCR。换句话说,打败你所设置的任何安全系统都比首先创建系统更容易

攻击者总是占上风,因为你只需让他们查看受保护的内容就可以将密钥交给金库。

答案 4 :(得分:0)

您是否可以在HTML代码中插入不可见的字符,因此如果复制它,将删除所有会导致语法错误的字符,但除非您复制到文本编辑器中,否则您将不会注意到它。它们是每个实际代码字符之间的随机字符。

可见代码:

function foo()

实际HTML:

f!u#n%c^t&i*o(n) (f@o$o%(^)&

其中每个符号都是不可见的unicode字符。我不知道有多少人,但我尝试了ZERO WIDTH NO-BREAK SPACE,似乎有效。这会带来不便。这是我们能做的最好的,不便,没有万无一失的方法可以阻止某人复制代码。

为了澄清,对于阅读该页面的任何人,他们都会看到第一行。对于将文本复制到文本编辑器中的人来说,他们要么看到正方形,要么只看到代码不应该编译。

答案 5 :(得分:0)

另一种选择,类似于图像,但会占用更少的空间和带宽,可以抓住画布上的代码(可能是通过ajax获取后)。需要最新的浏览器和更多的编程,但会创建无法轻易复制的干净文本。

相关问题