0

我从下面的互联网上获得了一些代码,并将其用于我正在做的模拟考试应用程序中。这是为了防止人们从考试页面打印屏幕、复制或剪切。该代码在 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;
}

4

3 回答 3

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 中可以这样做,因为这两个命令都不能在该浏览器中使用

但是请注意,只要站点在浏览器中打开,这将继续覆盖您的剪贴板,因此即使有人试图完全复制其他内容,他们也无法做到。

我想指出,我提供此功能只是为了向您展示您的代码有什么问题,因为如果不让人们在他们的计算机上安装第三方权限管理软件,您将永远无法完全做您想做的事情。

于 2015-03-12T17:27:16.663 回答
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>
于 2015-03-13T15:10:42.483 回答
-1

如果你只是想让它在其他浏览器中工作,也许使用 jQuery(类似这样的东西):

       $(document).keydown(function (e) {
            alert("PLEASE DON'T USE KEYBORD");
        });
于 2015-03-12T17:31:11.037 回答