我从下面的互联网上获得了一些代码,并在我正在做的模拟考试应用程序中使用它。这是为了防止人们从考试页面打印,复制或剪切。该代码在Internet Explorer中运行良好,但在其他浏览器中不起作用。我需要帮助才能使下面的代码在其他浏览器中工作,以避免在模拟考试期间在网站上作弊。以下是代码:
<script type="text/javascript">
function AccessClipboardData() {
try {
window.clipboardData.setData('text', "No print data");
} catch (err) {
txt = "There was an error on this page.\n\n";
txt += "Error description: " + err.description + "\n\n";
txt += "Click OK to continue.\n\n";
alert(txt);
}
}
setInterval("AccessClipboardData()", 300);
document.onkeydown = function (ev) {
var a;
ev = window.event;
if (typeof ev == "undefined") {
alert("PLEASE DON'T USE KEYBORD");
}
a = ev.keyCode;
alert("PLEASE DON'T USE KEYBORD");
return false;
}
document.onkeyup = function (ev) {
var charCode;
if (typeof ev == "undefined") {
ev = window.event;
alert("PLEASE DON'T USE KEYBORD");
} else {
alert("PLEASE DON'T USE KEYBORD");
}
return false;
}
答案 0 :(得分:0)
请注意,完全不可能阻止用户从javascript中复制或屏蔽您的网站,看看他们如何简单地禁用js或您的功能,特别是已经在评论中提到过。
如果您只想尽可能地阻止人们,您仍然可以使用您的代码,但是window.clipboardData.setData仅适用于IE,因此您在其他浏览器中收到错误消息并不奇怪,因为您会必须使用execCommand以设置的间隔
将设置的消息复制到剪贴板documnet.execCommand(delete, false, null)
删除当前选择,然后
documnet.execCommand(copy, false, null)
复制当前选中的文字(你刚才确定没什么)
(有关execCommand https://developer.mozilla.org/en-US/docs/Web/API/Document/execCommand的更多信息)
这应该适用于Firefox,Safari和Chrome,我知道在Opera中无法做到这一点,因为这两个命令都无法在该浏览器中运行
但请注意,只要网站在浏览器中打开,这将会覆盖您的剪贴板,因此即使有人试图完全复制其他内容,也无法进行复制。
我想指出,我提供此功能只是为了向您展示您的代码存在的问题,因为如果不让人们在其上安装第三方权限管理软件,您将永远无法完成您想要的任务。计算机。
答案 1 :(得分:0)
我在这里通过iDhavalVaja在Stackoverflow找到以下代码,它运行良好。
<script type="text/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>
答案 2 :(得分:-1)
如果你只想在其他浏览器中使用它,可以使用jQuery(类似这样):
$(document).keydown(function (e) {
alert("PLEASE DON'T USE KEYBORD");
});