2012-05-03 2 views

답변

1

편집 : 당신이 를 원하십니까 한 페이지에 기능 키 입력을 시뮬레이션 또는 는 사용자로부터 물리적 인 키 입력을 수신? 절차 적으로 기능 키 동작을 트리거하려면 원하는 동작을 트리거 할 수 없습니다. Rob이 지적했듯이 스크립트 이벤트는 스크립팅 된 이벤트 리스너 만 활성화하고 기본 동작을 트리거하지 않습니다. 하지 기능 키와 화살표 키와 같은 여러 인쇄 할 수없는 키 입력에 대한 발생하지 않습니다 keypress- 기능 키 입력을 감지하기 위해

, 당신은 keyup에 이벤트를 바인딩해야합니다.

document.documentElement.addEventListener("keyup", function(e) { 
    if(e.keyCode == 113) { 
     // if F2 is pressed... 
     // F1 is keycode 112, and it increments from there 
    } 
}); 

일부 기능 키는 이미 작업을 수행합니다 (F1은 도움말 열기, F5 새로 고침 등). 이 동작을 방지해야하는 좋은 이유가있는 경우 (예 : 일반적인 브라우저 동작을 나타내지 않아야하는 VNC 뷰어와 같이 몰입 형 전체 화면 앱을 만들고있는 경우) keydownpreventDefault을 사용하면 그럴 가능성이있는 작업을 중단 할 수 있습니다.

document.documentElement.addEventListener("keydown", function(e) { 
    if(e.keyCode == 112) { 
     // if F1 is pressed, don't open help 
     e.preventDefault(); 
    } 
}); 

Chrome 확장 프로그램의 키 입력을 처리하는 방법을 보려면 내 대답 Activate extension via short cut key을 참조하십시오. 그것은 당신이 나머지를 위해 필요한 것입니다. 간단히 :

  • 내가 위에서 준 각 페이지에 추가 된 가져옵니다 content script에 간다 코드

  • 핸들러의 기능은 페이지의 콘텐츠 스크립트 내에서 또는 passing a message으로 하나, 일부 작업을 수행 할 경우 배경 페이지

+0

대답 주셔서 감사합니다. 그렇습니다. 크롬 확장에서 기능 키를 시뮬레이션하고 싶습니다. 전의. 확장 페이지에 버튼이 있습니다. 사용자가 버튼을 클릭하면 실제로 기능 키를 시뮬레이션하고 싶습니다. 내가이 일을하도록 도와 줘. – 1509

+0

@ Nvn1509 두 가지 이유로 ** ** 불가능합니다. 1. Chrome 확장 프로그램은 'chrome : // extension /'URL에 액세스 할 수 없습니다. 2. 스크립트 키 이벤트는 절대로 기본 동작을 트리거하는 데 사용할 수 없습니다. –

+0

고맙습니다. 끝나면 끝낼 수 있습니다. – 1509

관련 문제