2009-05-23 3 views
1

예를 들어, (일반적으로 북마크 관리자의 어떤 종류를 가져올 것입니다) 브라우저, 그것은 즉 켜 서식 목적을 탈취에 전달하기 comoposing의 중간에 메시지 ur에 대한 굵은 체재. 과 동일 함 Ctrl + iCtrl + u자바 스크립트에서 키 콤보를 납치하는 방법은 무엇인가요? 하나는 대신 <kbd>Ctrl 키</kbd> + <kbd>B</kbd>을 누를 때 Gmail에서

어떻게 처리하나요?

+2

내 대답은이 작업을 수행하지 마십시오. 그러나 나는 그것이 당신이 찾고있는 것이 아닌지 의심 스럽습니다. –

+0

그래, 그게 아니야 :) 사실 내가하고있는 계획은 아마도 당신이 생각한 것만 큼 나쁘지는 않을 것이다. 나는 그것을 greasemonkey 스크립트에 로컬로 사용할 예정이었다. –

+1

누구나 버전 1을 되돌릴 수 있습니까? – dmeister

답변

0

은 핸들러 함수를 발사하기 위해 onkeydown 또는 onkeyup 이벤트를 사용하여 그와

var body = document.getElementsByTagName("body")[0]; 
body.onkeydown = function(event) { 
    var str = ""; 
    for (var prop in event) { 
     str += prop + ": " + event[prop] + "<br>"; 
    } 
    body.innerHTML = str; 
}; 

는 당신이 이벤트 개체가 무슨 속성을 볼 수 있습니다.

8

document 개체에 onkeydown 또는 onkeyup 이벤트 처리기를 연결합니다. 내가 Ctrl 키-M을 누를 때마다 "asdf을"로 제목 표시 줄 변경을하고 싶었 예를 들어, 나는 다음과 같이 window.onload를 통해 이벤트 핸들러를 등록합니다 :

window.onload = function() 
{ 
    document.onkeydown = function(event) 
    { 
     var keyCode; 

     if (window.event) // IE/Safari/Chrome/Firefox(?) 
     { 
      keyCode = event.keyCode; 
     } 
     else if (event.which) // Netscape/Firefox/Opera 
     { 
      keyCode = event.which; 
     } 

     var keyChar = String.fromCharCode(keyCode).toLowerCase(); 

     if (keyChar == "m" && event.ctrlKey) 
     { 
      document.title = "asdf"; 
      return false; // To prevent normal minimizing command 
     } 
    }; 
}; 

W3 스쿨이 사용에 대한 자세한 정보가 이벤트 : onkeydownonkeyup.

또한, 내가 브라우저에서 일부 불일치 이벤트 속성 (같은, 예를 들어, 파이어 폭스, 당신이 IE에서이 event.keyCode을있는 동안, event.which을 통해 키 코드에 액세스하는 거 야에 관해서 있다는 것을 유의해야한다고 생각 Firefox가 event.keycode-confusing을 지원할 수도 있지만 그렇습니까?). 그렇기 때문에 Prototype 또는 jQuery과 같은 JavaScript 프레임 워크를 통해 이러한 작업을 수행하는 것이 좋습니다. 모든 icky 호환성을 처리합니다.

+0

예를 들어 주시겠습니까? (meta- (: P)) 예를 들어, 키 조합 CTRL + M을 사용할 때 문서의 제목을 'asdf'텍스트로 변경하는 방법을 보여줍니다. 고마워, 많이 고맙습니다. –

+0

@asdf : 물론, 나는 대답을 넓혔다. 희망이 도움이됩니다. – hbw

+0

@htw : 예, 고맙습니다. :) 지금은 넷스케이프/파이어 폭스/오페라/커버가 있습니다. 사파리/크롬에도 해당 코드가 있습니까? –

3

다음은 jQuery를 사용하는 HTML 페이지의 소스이며 htw's solution의 기능을 수행합니다.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
<html> 
    <head> 
    <title>Hijack Example</title> 
    <script type="text/javascript" src="../scripts/jquery-1.2.1.js"> 
    </script> 
    <script type="text/javascript"> 
     $(function(){ 
      document.title = "before keypress detected"; 
      $(document).keydown(function(event) { 
       // alert('stuff happened: ' + msg + " " + event.keyCode); 
       var keyChar = String.fromCharCode(event.keyCode).toLowerCase(); 
       if (keyChar == "m" && event.ctrlKey) { 
        document.title = "ctrl-m pressed!"; 
       } 
      }); 
     }); 
    </script> 
    </head> 

    <body id="body"> 
    <p>Change the path to jquery above as needed (search for ../scripts/jquery-1.2.1.js)</p> 
    <p>Watch the title bar, then press control-M, then watch the title bar again!</p> 
    </body> 
</html> 

희망이 있으면 누군가 도움이됩니다.

관련 문제