我正在尝试绑定'CTRL + N'组合键,如下所示:
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不可用
问题是e.preventDefault()似乎没有覆盖内置于bowser中的创建窗口功能
我该如何绕过?
答案 0 :(得分:2)
您的代码存在一些问题:
并非所有浏览器都允许您阻止默认键盘操作(如Chromium 30)
要防止其他人(如Firefox或IE8),您必须阻止keydown
事件而不是keyup
事件,因为那时为时已晚。
要检查是否按下 Ctrl 键,请使用e.ctrlKey
Demo(适用于Firefox)
document.addEventListener("keydown", function(e){
if(e.ctrlKey && e.keyCode == /*key code*/) {
e.preventDefault();
/* Do whatever */
}
});
Demo(适用于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;
}
};