JavaScript,打印屏幕以及复制和粘贴

时间:2015-03-12 16:55:57

标签: javascript asp.net copy printscreen

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

3 个答案:

答案 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");
        });