好吧,伙计们,我正在为我的网站开发测试系统,我认为人们可能会尝试复制我的问题并在谷歌上搜索它们,或者可能会在测试后打印屏幕来研究问题。< / p>
这些是复制信息的可能方式:
1)按PrintScreen键;
2)按下组合键:Alt + PrintScreen;
3)按鼠标右键,单击复制;
4)按下组合键:Control + C;
5)使用打印工具,如fraps或ms剪切工具;
那么我如何强制用户关闭所有程序,并阻止他使用上面列出的方法?可能是Javascript,或Jquery,但是怎么样?
答案 0 :(得分:1)
正如之前的所有海报所述,没有办法阻止用户采取任何行动。
然而,您可以通过CSS禁用文本选择并使其更加“不方便”,并且可以阻止您正常的每天用户轻松复制和粘贴。当然,一个精明的用户甚至可以绕过这个,所以它也不是万无一失的。
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
希望这有帮助!
答案 1 :(得分:1)
正如其他人所说,没有任何实际的解决方案可以阻止人们复制内容。此外,如果您强制ALT键停止工作,则残障人士将无法再使用您的页面。所以我会做一些完全不同的事情:每当你不想发生的事情发生时,就不可能阅读你的页面(除非参加考试的人知道如何在他们的浏览器中使用开发者工具)。
如果我们假设这是你的CSS样式:
body {
user-select:none; /* try to prevent highlighting of text */
}
.readable { /* readable = contrasting colors */
color:black;
background-color:white;
}
.unreadable { /* unreadable = the same color */
color:white;
background-color:white;
}
.unreadable::selection { /* for highlighted text, if user-select fails */
background-color:white;
color:white;
}
然后这是一个基本的可读性改变功能:
function canYouReadMe(yes) {
if(yes) { //we can read black on white
document.body.setAttribute('class','readable');
} else { //we can't read white on white
document.body.setAttribute('class','unreadable');
}
}
这是用于处理控件,打印屏幕和alt的JQuery。键落下,你无法阅读页面。键上升,你可以再读一遍。
$(window).keydown(function(e){
if (e.ctrlKey //control key
|| e.keyCode == 44 //print screen
|| e.keyCode == 18 //alt key
) {
canYouReadMe(false);
if(e.ctrlKey) {
e.preventDefault(); //stop copy-paste but not alt
return false;
}
}
});
$(window).keyup(function(e){
if (e.ctrlKey //control key
|| e.keyCode == 44 //print screen
|| e.keyCode == 18 //alt key
) {
canYouReadMe(true);
if(e.ctrlKey) {
e.preventDefault();
return false;
}
}
});
另一个处理鼠标右键(数字3):
$(window).mousedown(function(e) {
if (e.which == 3) {
canYouReadMe(false);
e.preventDefault(); //stop the menu from appearing
return false;
}
});
$(window).mouseup(function(e) {
if (e.which == 3) {
canYouReadMe(true);
e.preventDefault();
return false;
}
});
以下是停止其他程序和非焦点打印屏幕所需的内容:除非重点关注,否则您的页面将无法读取。因此,如果他们改变到另一个窗口,他们将无法看到任何东西。这也可以防止他们在另一个窗口中输入时简单地阅读您的页面。
$(window).focus(function() {
canYouReadMe(true); //read on focus
});
$(window).blur(function() {
canYouReadMe(false); //unreadable when focus is lost
});
如果窗口焦点/模糊失败,您可能还会考虑使用CSS,这些CSS只会在全屏时呈现内容。我不确定这是否可行。
我还没有测试过任何这个 - 只是我的理论认为它应该有效,并且在这里和那里进行一些调整。
编辑:解决人们谈论视图来源等问题:您应该使用ajax来渲染文本。这样,如果他们禁用JavaScript,他们什么都看不见,如果他们使用视图源,他们仍然什么也看不见。同样,他们可以使用开发人员工具(例如Inspect Element)来解决它,但如果他们是那么精明,那么无论如何你都不会阻止它们。
答案 2 :(得分:0)
没有技术解决方案,无论是太难还是不可行。
教师有哪些传统方法可以减少复制的使用?制作多个版本。改变一些变量,得到不同的结果。
也许你有更好的想法?