2013-05-18 3 views
1

Chrome에서 웹 응용 프로그램을 만들고 있는데 일부 바로 가기 키가 필요하며 기능 키를 사용하고 싶습니다.Chrome에서 기능 키 덮어 쓰기 기본 동작

그러나 F1은 도움말 창을 트리거하고, F3은 페이지 검색, F5 새로 고침 등을 트리거합니다. 이 키는 내 문맥에서 사용하지 않으므로 덮어 쓰려고합니다.

하지만 기본값이 실행되는 것을 막을 수는 없습니다. 내가 예를 방지하기 위해 할 수있는 일

$(document).keyup(function(e) { 

    // GET KEYCODE 
    var keyCode = e.keyCode;       //alert(keyCode); 

    // CHECK KEYBOARD CONTEXT 
    var keyboardContext = $('#keyboard-context').attr('data-context'); 

    // JS KEYCODES FOR FUNCTION KEYS 
    var functionKeys = new Array(112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123); 
    var keyNames = new Array('F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9', 'F10', 'F11', 'F12'); 

    // CONVERT KEYCODE INTO KEYNAME, FOR EASE OF BINDING IN DOM 
    for (var i = 0; i < functionKeys.length; i++) { if (functionKeys[i] === keyCode) { keyCode = keyNames[i]; } } 

    // MAKE SURE THAT THE QUICK LAUNCH SHORTCUT KEY, ALWAYS LAUNCHES THE QUICKNAV 
    if (keyCode === 'F1') { 
     $('.keyboard-shortcut').each(function() { 
      if ($(this).data('shortcut-key') === keyCode && $(this).hasClass('load-small-content') && $(this).attr('data-keyboard-context') === 'launch-quick-nav') { 
       loadSmallContent($(this).data('load-from')); 
      } 
     }); 

    } 

    // PREVENT DEFAULT FOR FUNCTION KEYS 
    if (functionKeys.indexOf(keyCode) > -1) { 
     e.preventDefault(); 
     e.stopPropagation(); 
     return false; 
    } 
}); 

: 다음은 내 코드입니다 F1 도움말 페이지가 열리지 않으십니까?

+0

HTTP로 JS 키 코드를 넣어 .quirksmode.org/js/keys.html 링크가 도움이 될 수 있습니다. –

+0

죄송합니다. 도움이 필요 없습니다 ... – EibergDK

답변

2

나는 해결책을 찾았다. // WWW : 다음은 바로 F-키 ​​이외의 키를 방지하기위한

function disableFunctionKeys(e) { 
    var functionKeys = new Array(112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 123); 
    if (functionKeys.indexOf(e.keyCode) > -1 || functionKeys.indexOf(e.which) > -1) { 
     e.preventDefault(); 
    } 
}; 

$(document).ready(function() { 
    $(document).on('keydown', disableFunctionKeys); 
}); 

... 어느 곳은 .js 파일에 포함되어야한다, 단지 배열 :