用javascript听'CTRL + N' [英] listen to 'CTRL+N' with javascript

查看:121
本文介绍了用javascript听'CTRL + N'的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试绑定'CTRL + N'组合键,如下所示:

I am trying to bind the 'CTRL+N' key combination, like this:

var ctrlPressed = false;
    var nCode = 78;
    var ctrlCode = 224;
    var cmdCode = 17;
    document.addEventListener ("keydown", function(e){
        if( e.keyCode == ctrlCode || e.keyCode == cmdCode){
            ctrlPressed = true;
        }else{
            ctrlPressed = false;
        }
        console.log(e.keyCode);
    });
    document.addEventListener ("keyup", function(e){
        if(ctrlPressed && e.keyCode == nCode){
             e.preventDefault();
            nou_element(parent);
            return;
        }
    });

请注意:jQuery不可用

Please note: jQuery isn't avaliable

问题是e.preventDefault()似乎没有覆盖Bowser内置的创建窗口功能

The thing is that the e.preventDefault() doesn't seem to override the create window functionality built into the bowser

我该如何绕过?

推荐答案

您的代码存在一些问题:

You code has some problems:

  • 并非所有浏览器都允许您阻止默认的键盘操作(例如Chromium 30)

  • Not all browsers allow you to prevent default keyboard actions (like Chromium 30)

要阻止其他事件(例如Firefox或IE8),必须防止keydown事件而不是keyup事件,因为为时已晚.

To prevent them on the others (like Firefox or IE8), you must prevent keydown event instead of keyup one, because then it's too late.

要检查是否按下了 Ctrl 键,请使用e.ctrlKey

To check if Ctrl key is pressed, use e.ctrlKey

演示 (对于Firefox)

Demo (for Firefox)

document.addEventListener("keydown", function(e){
    if(e.ctrlKey && e.keyCode == /*key code*/) {
        e.preventDefault();
        /* Do whatever */
    }
});

演示 (适用于Firefox和IE8)

Demo (for Firefox & IE8)

document.onkeydown =  function(e){
    e = e || window.event;
    if(e.ctrlKey && e.keyCode == nCode) {
        e.preventDefault ? e.preventDefault() : e.returnValue = false;
        /* Do whatever */
        return false;
    }
};

这篇关于用javascript听'CTRL + N'的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆