1

which 속성을 원하는 값으로 설정하는 Chrome에서 keydown 이벤트를 프로그래밍 방식으로 트리거하는 방법은 무엇입니까?프로그래밍 방식으로 'which` 속성을 사용하여 keydown 이벤트를 트리거하십시오.

new KeyboardEvent('keydown', { 
    'which':65, 
    'charCode':65, 
    'keyCode':65, 
    'key':"a", 
    'code':"KeyA", 
}); 

시도했지만 입력의 onKeyDown 핸들러 속성을 수신하는 경우, 이벤트는 0 동일 which,charCode and keyCode있다. keya으로 올바르게 설정되었습니다. 도움

크롬에서
+1

전체 코드는 무엇입니까? – epascarello

+0

왜 이것이 필요한가요? 실제'keydown' 이벤트가'65' 키로 시작된 경우 실행되는 코드를 호출 할 수 없습니까? –

+0

이것은'keyCode'가'KeyboardEvent' 생성자의 문서화 된 부분이라는 점을 감안할 때, 브라우저 버그처럼 보입니다. – Ryan

답변

1

에 대한

덕분에, 그 이벤트 속성은 0의 기본 값을 가지고 (때문에 사용되지 자신에) 쓸 수 없습니다. 당신은 기본 속성을 삭제 한 다음 필요를 다시 만들 :

var ke = new KeyboardEvent('keydown', { 
 
    'key':"a", 
 
    'code':"KeyA", 
 
}); 
 

 
// Delete native event read-only properties with default values of 0 
 
delete ke.keyCode; 
 
delete ke.charCode; 
 
delete ke.which; 
 

 
// Create new custom properties that are read/write: 
 
Object.defineProperty(ke, "keyCode", {"value" : 65}); 
 
Object.defineProperty(ke, "charCode", {"value" : 65}); 
 
Object.defineProperty(ke, "which", {"value" : 65}); 
 

 
var el = document.getElementById("key"); 
 

 
el.addEventListener("keydown", function(evt){ 
 
    console.log(evt.key, evt.code, evt.keyCode, evt.charCode, evt.which); 
 
}); 
 

 
el.dispatchEvent(ke);
<input type="text" id="key">

관련 문제