我正在使用onkeyup和onkeydown函数之类的事件。在这种情况下,我尝试使用Java脚本单独禁用printscr。我用alt键ASCII搜索了18,Printscr是44。

这是我尝试禁用的代码:

document.onkeyup = function(e)
            {
                if (e.which === 44)
                {
                    alert('alt key pressed');
                    return false;
                }

            };
var isAlt = false;
document.onkeydown = function(e)
            {
                if (e.which === 18) {
                    isAlt === true;
                    if (((e.which === 44)) && isAlt === true)
                    {
                        alert('tested printscreen');
                        return false;
                    }
                }
            };


在该keyup警报中,但返回false不会触发。同样对于alt + printscr也没有得到警报。我该怎么办?我有什么地方犯错了吗?

最佳答案

查看用于停止事件的特定于浏览器的文档:

e.stopPropagation()


同样,在键输入中,文本框可能已填充了来自重复键的多个字符。在按键输入中,您需要存储值。在键输入中,如果您获得了44键,则恢复该值。并且,您需要将密钥处理程序放置在窗口而不是文档上。

(function() {

var savedValue;

window.onkeyup = function(e) {
    if (e.altKey && e.which === 44) {
        alert('alt key pressed');

        if (undefined !== savedValue) {
            e.target.value = savedValue;
            savedValue = undefined;
        }
        return;
    }
};

window.onkeydown = function(e) {
    if (undefined === savedValue) {
        savedValue = e.target.value;
    }

    if (e.altKey && e.which === 44) {
        alert("tested printscr");
    }
};

})();

09-25 19:01