나는 Firefox Addon을 작성 중이며 프로그래밍 방식으로 키 이벤트를 생성하고 브라우저에서 사용자가 해당 키를 입력 한 것처럼 모든 작업을 수행해야합니다.Firefox addon : DOMWindowUtils.sendKeyEvent misbehaving
DOMWindowUtils (https://developer.mozilla.org/en-US/docs/XPCOM_Interface_Reference/nsIDOMWindowUtils)의 sendKeyEvent를 사용하려고합니다. 다음 문제를 발견했습니다 :
contentEditable 필드 내에 왼쪽 화살표/오른쪽 화살표와 같은 이벤트가 생성되면 브라우저가 커서 위치를 변경하지 않습니다. 왜? (참고 : 'a', 'b'와 같은 문자를위한 이벤트를 생성하면 브라우저가 contentEditable 영역 내의 텍스트를 적절히 업데이트하므로 코드에 명백한 결함이 없음). contentEditable이 아닌 필드의 경우 예상대로 작동합니다.
환경 - 브라우저 '(코드에는 크롬 권한이 필요함)를 사용하여 도구 -> 웹 개발자 -> 스크래치 패드에서 실행할 수있는 샘플 코드.
var doc = gBrowser.contentDocument,
win = doc.defaultView;
var domWindowUtils = win.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
.getInterface(Components.interfaces.nsIDOMWindowUtils);
var div = doc.getElementById('contentEditableDiv');
div.focus();
['keydown', 'keypress', 'keyup'].forEach(function(type) {
// if I generate characters like 'a', 'b' they work
// domWindowUtils.sendKeyEvent(type, 65, 97, 0, 0);
// 37 is left arrow, 38 right arrow
domWindowUtils.sendKeyEvent(type, 37, 0, 0, 0);
});
나는 initEvent/dispatchEvent
을 사용해 보았지만 같은 결과를 나타 냈습니다.
안정적으로 이벤트를 생성하고 브라우저가 모든 작업을 수행 할 수있는 방법이 있습니까?
감사합니다. 이 정보를 바탕으로 내 질문을 업데이트했습니다. 그러나 여전히 화살표 키와 관련된 이벤트를 생성 할 때 커서/캐럿을 이동하는 기본 동작을 얻지 못하는 이유는 무엇입니까? –