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

JavaScript, Print Screen and copy and paste

本文关键字:复制 打印 屏幕 JavaScript      更新时间:2023-09-26

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

请注意,完全不可能阻止用户从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中没有办法做到这一点,因为这两个命令都无法在该浏览器中工作

但请注意,只要网站在浏览器中打开,这就会不断覆盖您的剪贴板,因此即使有人试图完全复制其他内容,他们也无法。

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

我在 Stackoverflow 中找到了以下代码,由 iDhavalVaja 提供,它工作正常。

<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>

如果你只是想在其他浏览器中工作,也许可以使用jQuery(像这样):

       $(document).keydown(function (e) {
            alert("PLEASE DON'T USE KEYBORD");
        });