我在Extjs面板上监听keydown事件以执行某些操作。当我按ctrl + c,ctrl + v时,我复制,粘贴SVG对象。这适用于Windows操作系统和所有浏览器。但我有MAC的问题。我想检测MAC中的⌘+ C /⌘+ V. 简而言之,我想检测MAC中的⌘键。怎么做 ?有什么帮助吗?
getKeyboardAction :function(event){
var isCtrlKeyPressed = event.ctrlKey;
var isCopy = (isCtrlKeyPressed && event.keyCode == 67)?true:false;
var isPaste = (isCtrlKeyPressed && event.keyCode == 86)?true:false;
var isDuplicate = (isCtrlKeyPressed && event.keyCode == 68)?true:false;
var isDelete = (event.keyCode ==46)?true:false;
var isLeftArrow = (event.keyCode ==37)?true:false;
var isUpArrow = (event.keyCode ==38)?true:false;
var isRightArrow = (event.keyCode ==39)?true:false;
var isDownArrow = (event.keyCode ==40)?true:false;
var isEsc = (event.keyCode ==27)?true:false;
var keyboardAction = null;
if(isCopy) return 'COPY';
else if(isPaste) return 'PASTE';
else if(isDuplicate) return 'DUPLICATE';
else if(isDelete) return 'DELETE';
else if(isLeftArrow) return 'MOVELEFT';
else if(isUpArrow) return 'MOVEUP';
else if(isRightArrow) return 'MOVERIGHT';
else if(isDownArrow) return 'MOVEDOWN';
else if(isEsc) return 'ESCAPE';
return null;
},
由于
答案 0 :(得分:1)
要在OSX上可靠地捕获 CMD密钥,您需要监听keydown
和keyup
个事件,而不是keypress
(不会触发)实例。要创建和捕获快捷方式,我会将任何 keyCode 推送到keydown
上的数组,并删除keyup
上的相同代码。
var pressedKeys = [ ];
$( document.body ).on('keydown', function( event ) {
pressedKeys.push( event.which || event.keyCode );
});
$( document.body ).on('keyup', function( event ) {
var pos;
if( (pos = Private.pressedKeys.indexOf( event.which || event.keyCode )) > -1 ) {
Private.pressedKeys.splice( pos, 1 );
}
});