Javascript中的Onkeyup事件不起作用?

Javascript中的Onkeyup事件不起作用?,javascript,jquery,dom-events,keyboard-events,Javascript,Jquery,Dom Events,Keyboard Events,我正在使用类似onkeyup和onkeydown函数的事件。在这方面,我尝试使用Javascript单独禁用printscr。我在谷歌上搜索到alt键ASCII是18,Printscr是44 以下是我试图禁用的代码: document.onkeyup = function(e) { if (e.which === 44) { alert('alt key pressed

我正在使用类似onkeyup和onkeydown函数的事件。在这方面,我尝试使用Javascript单独禁用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警报起作用,但return 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");
    }
};

})();

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

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

})();

我认为文档的onkeyup中的“false”是没有用的(文档实际上处于事件链的末尾)。此外,只有当您在页面中有一个焦点元素(例如,任何输入标记,画布等)时,才会铸造事件,如果没有任何内容将铸造,因此没有事件将到达“document”元素。感谢您的回复,那么我如何使printscreen使return为false;我认为文档的onkeyup中的“false”是没有用的(文档实际上处于事件链的末尾)。此外,只有当您在页面中有一个焦点元素(例如,任何输入标记,画布等)时,才会铸造事件,如果没有任何内容将铸造,因此没有事件将到达“document”元素。感谢您的回复,那么我如何使printscreen使return为false;谢谢Craig,我尝试了你的代码,但仍然没有得到任何提示。你能给我提供JSFIDLE吗?通过这个我可以了解我犯了什么错误。你在按print screen时按ALT键了吗?另外,通过删除altKey检查,可能值得检查您是否获得了该密钥。如果你仍然看不到任何东西,我猜浏览器没有将printscr按键传播到DOM。谢谢Craig,我尝试了你的代码,但仍然没有收到任何警报。你能给我提供JSFIDLE吗?通过这个我可以了解我犯了什么错。你在按print screen时按ALT键了吗?另外,通过删除altKey检查,可能值得检查您是否获得了该密钥。如果您仍然没有看到任何内容,我猜浏览器没有将printscr按键传播到DOM。