Safari 브라우저 내에서 키보드 이벤트를 시뮬레이션하기 위해 JavaScript를 사용하여 두 가지 접근 방식을 테스트했습니다.
접근 방식 1:
var event = document.createEvent("KeyboardEvent"); event.initKeyboardEvent("keypress", true, true, null, false, false, false, false, 115, 0);
접근법 2:
var event = document.createEvent("UIEvents"); event.initUIEvent("keypress", true, true, window, 1); event.keyCode = 115;
그러나 두 코드 중 하나를 실행한 후 이벤트 객체의 keyCode/속성은 0으로 설정되어 있습니다. , 실패했음을 나타냅니다. 시뮬레이션.
해결책:
DOM 키보드 이벤트 레벨 3 폴리필에 따라 다음 접근 방식을 사용할 수 있습니다.
element.addEventListener("keydown", function(e){ console.log(e.key, e.char, e.keyCode) }) var e = new KeyboardEvent("keydown", {bubbles : true, cancelable : true, key : "Q", char : "Q", shiftKey : true}); element.dispatchEvent(e); // If the legacy "keyCode" property is required: delete e.keyCode; Object.defineProperty(e, "keyCode", {"value" : 666})
추가 업데이트:
DOM 키보드 이벤트 레벨 3 이제 폴리필은 레거시 속성을 지원합니다.
var e = new KeyboardEvent("keydown", { bubbles : true, cancelable : true, char : "Q", key : "q", shiftKey : true, keyCode : 81 });
브라우저 간 호환성을 위해 다음 initKeyboardEvent 함수를 폴리필 외부에서 활용할 수 있습니다.
function initKeyboardEvent(type, bubbles, cancelable, view, key, location, modifiers, repeat) { var event = document.createEvent("KeyboardEvent"); event.initKeyboardEvent(type, bubbles, cancelable, view, key, location, modifiers, repeat, false, false, false, false, false, false, 0); return event; }
제공된 예제와 데모를 참조하세요. 추가 그림.
위 내용은 JavaScript를 사용하여 Safari에서 키보드 이벤트를 시뮬레이션하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!