我有一个函数可以使用事件找出用户按下的按钮,并使用 event.key 属性。但是,在函数的参数中,如果我为其分配类型 Event,编译器会抱怨
“事件”类型中不存在属性“key”。
这是我的代码。
function getDirection(e:Event):void{
let directionCode:number = e.key;
// code going on here
}
为什么类型事件上的关键属性未被识别。
因为
Event
没有该属性,所以 KeyboardEvent
就是你想要的类。
function getDirection(e:KeyboardEvent):void{
let directionCode:number = e.keyCode;
let directionCodeStr:string = e.key;
// code going on here
}
您应该输入cast您的事件:
myInput.addEventListener('keyup', (e) => {
let keyboardEvent = <KeyboardEvent> e;
if(keyboardEvent.keyCode === 40){
//...
}
}
另外,由于 event.kecode 已被弃用,您可以执行以下操作:
myInput.addEventListener('keyup', (e) => {
let keyboardEvent = <KeyboardEvent> e;
if(keyboardEvent.key === 'ArrowDown'){
//...
}
}
防止通过键盘按键和右键单击进行检查
document.addEventListener('contextmenu', (e) => e.preventDefault());
函数 ctrlShiftKey(e, keyCode) {
return e.ctrlKey && e.shiftKey && e.keyCode === keyCode.charCodeAt(0); }
// 禁用 F12、Ctrl + Shift + I、Ctrl + Shift + J、Ctrl + U
document.onkeydown = (e) => {
如果( 事件.keyCode === 123 ||
ctrlShiftKey(e, 'I') ||
ctrlShiftKey(e, 'J') ||
ctrlShiftKey(e, 'C') ||
(e.ctrlKey && e.keyCode === 'U'.charCodeAt(0)))
return false };