1

我正在使用像 onkeyup 和 onkeydown 函数这样的事件。在那我试图禁用printscr 单独使用Javascript。我用谷歌搜索了那个alt密钥 ASCII 是 18 和Printscr44。

这是我试图禁用的代码:

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 警报正在工作,但 return false 没有触发。对于alt+printscr也没有收到警报。我该怎么办?有什么我犯错的地方吗?

4

1 回答 1

1

查看浏览器特定文档以停止事件:

e.stopPropagation()

此外,在 key up 中,文本框可能已经填充了来自 key repeat 的多个字符。在 key down 中,您需要存储该值。在 key up 中,如果您获得 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");
    }
};

})();
于 2013-07-03T12:34:29.037 回答