用javascript听'CTRL + N' [英] listen to 'CTRL+N' with javascript
问题描述
我正在尝试绑定'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屋!