2016-10-15 16 views
4

키 이벤트 (누름)를 크롬 53에서 시뮬레이트하려고합니다. I에 유래에서 발견 모든 솔루션은자바 스크립트 - Chrome에서 키 이벤트 시뮬레이트 53

내 목표는 keyCode을 유도 할 수있는 기능을 가지고있다 .. 작동하지 않는 것 같습니다과 함께 키 누름을 시뮬레이션 - 순수 JS가

function keyPressSimulate(keyCode) {...?} 
필요합니다 나는 이미 시도

코드 샘플 :

Node.prototype.fire=function(type,options){ 
    var event=new CustomEvent(type); 
    for(var p in options){ 
     event[p]=options[p]; 
    } 
    this.dispatchEvent(event); 
} 

document.fire("keyup",{ctrlKey:true,keyCode:90,bubbles:true}) 

또 다른 하나

그리고 :

var e = new KeyboardEvent("keydown", {bubbles : true, cancelable : true, key : "Q", shiftKey : true}); 
global.document.dispatchEvent(e); 

그리고 :

presskey: function(k) { 
      var keyboardEvent = document.createEvent("KeyboardEvent"); 

      var initMethod = typeof keyboardEvent.initKeyboardEvent !== 'undefined' ? "initKeyboardEvent" : "initKeyEvent"; 


      keyboardEvent[initMethod](
           "keydown", 
           true,  // bubbles oOooOOo0 
           true,  // cancelable 
           window, // view 
           false,  // ctrlKeyArg 
           false,  // altKeyArg 
           false,  // shiftKeyArg 
           false,  // metaKeyArg 
           k, 
           0   // charCode 
      ); 

      global.document.activeElement.dispatchEvent(keyboardEvent); 
     } 
+0

많은 가능한 해결책을 찾았습니다. http://stackoverflow.com/questions/10455626/keydown-simulation-in-chrome-fires-normally-but-not-the-correct-key me –

+0

해결책은 순수한 js이어야합니다. –

+0

무례한 것은 아닙니다.하지만 이미 노력한 코드 샘플을 추가 할 때까지 아무도 도움을주지 않을 것입니다 ... – evolutionxbox

답변

1

keyCode 속성이 사용되지 않으며 그러나 전용 KeyboardEvent

를 사용하는 동안 설정할 수 없습니다, 당신은 사용자 정의 이벤트를 사용하여 설정할 수 있습니다 2 단계 연산으로 원하는 속성 (생성자에서 사용되는 경우 무시됩니다) :

<div id="test" onkeydown="this.textContent = event.keyCode;"></div> 
<button onclick=" 
    var e = new Event('keydown'); 
    e.keyCode = 42; 
    document.getElementById('test').dispatchEvent(e); 
    ">click me</button> 

의견에 따라 편집 이벤트는 문서의 특정 요소를 대상으로하는 사용자 상호 작용으로 인해 트리거됩니다.

예를 들어, 키보드에서 키를 치는 사용자는 일련의 이벤트 (keydown, keyup, keypress)입니다. 일부는 브라우저가 입력 필드 값을 채우기 위해 캡처 한 다음 이벤트로 자바 스크립트로 전송됩니다. 수동으로 (1) 포커스가있는 곳을 감지하고, (2) 기본 브라우저 동작을 기반으로 포커스 된 요소의 속성을 업데이트하는 것 외에는 자바 스크립트 샌드 박스 내에서 키를 치는 사용자를 에뮬레이트 할 수있는 방법이 없습니다. (3) 대상 요소에서 적절한 이벤트를 트리거합니다.

+0

코드 예제에서 이미 시도한 것처럼 보입니다. 어쩌면 내가 뭔가 잘못하고있는 것 같아. 코드 예제를 제공해 주시겠습니까? –

+0

Chrome에서 작동하는 예를 사용하여 내 대답을 편집했습니다. 012.0 – Simon

+0

나를 위해 일하지 않았습니다. 예를 들어 구글 \ 검색 페이지에서도 시도 : 'var e = new Event ('keydown'); e.keyCode = 42; document.getElementById ('lst-ib'). dispatchEvent (e); ' 그리고 아무것도 ... –