2009-09-15 7 views
4

사용자가 swf 파일의 일부 키 조합을 누르려고 시도하는 동안 브라우저 바로 가기를 사용하지 않으려합니다. 내가 파이어 폭스에서 이것을 달성 할 수 있지만, 아래 코드는 8에서 작동하지 않는다. 아래 코드는 포커스가 swf 파일에 없다면 키보드 이벤트를 걸 수있다. 그러나, 내가 필요한 건 사용자가 swf 파일을 조작 할 때 키보드 이벤트를 연결하는 것이다.IE 키보드 이벤트를 연결하는 방법?

function hookKeyboardEvents(e) { 

    alert("hooked key"); 
    // get key code 
    var key_code = (window.event) ? event.keyCode : e.which; 

    // case :if it is IE event 
    if (window.event) 
    { 
     if (!event.shiftKey && !event.ctrlKey && !event.altKey) { 
      window.event.returnValue = null; 
      event.keyCode=0; 
     }  
    } 
    // case: if it is firefox event 
    else 
     e.preventDefault(); 

    document[flashId].keyDown(key_code); 
} 

window.document.onkeydown = hookKeyboardEvents; 

위의 코드는 SWF 파일에 포커스가있을 때 실행되지 않습니다.

+0

코드를 수정하면됩니다. shiftKey, ctrlKey 및 altKey 속성은 IE와 W3C 브라우저에서 모두 사용할 수 있습니다. window.event (IE 규약)을 테스트 할 필요가 없습니다. –

+0

그래서 그냥 e.preventDefault()가 이벤트를 취소 할 것임을 의미합니다 – Oki

+0

preventDefault는 Mozilla 브라우저에서는 작동하지만 IE에서는 작동하지 않을 것이라고 생각합니다. 어떤 브라우저를 기반으로하는지에 근거하지 않고 속성이 존재하는지 여부에 따라 조건문을 수행하면 가장 효과적입니다. 보십시오 if (e.preventDefault) {e.preventDefault(); } 대신 if (! window.event) {e.preventDefault(); } –

답변

1
document.body.accessKey = String.fromCharCode(e.keyCode); 
관련 문제