Vim
에서 gg
을 눌러 문서의 시작 부분으로 이동하거나 dd
을 눌러 현재 행을 삭제하십시오. 웹 페이지에서 비슷한 동작을 구현하는 방법은 무엇입니까? 웹 페이지 환경에서 이벤트를 트리거하기 위해 두 개의 연속 키 프레스 이벤트를 캡처하는 방법은 무엇입니까?두 개의 연속 키를 눌러 JavaScript에서 이벤트를 트리거하십시오.
감사합니다.
Vim
에서 gg
을 눌러 문서의 시작 부분으로 이동하거나 dd
을 눌러 현재 행을 삭제하십시오. 웹 페이지에서 비슷한 동작을 구현하는 방법은 무엇입니까? 웹 페이지 환경에서 이벤트를 트리거하기 위해 두 개의 연속 키 프레스 이벤트를 캡처하는 방법은 무엇입니까?두 개의 연속 키를 눌러 JavaScript에서 이벤트를 트리거하십시오.
감사합니다.
내에서 두 번 만 불을 누르면됩니다 경우
//for gg
var inCombo = false;
function KeyPress(Key) {
if(Key=='g') {
if(!inCombo) {
inCombo = true;
setTimeout('inCombo=false;', 100);
} else {
//Do the action here
}
}
}
예 (의사). 간단히 일반 키 이벤트를 등록하고 키를 배열에 푸시하십시오.
이제 명령에 대해 확인하는 함수를 호출 할 수 있습니다 물론,
// More or less pseudo code
function deleteLine(){};
function copyLine(){};
var commands = {'dd': deleteLine, 'yy': copyLine};
function onKeyPress(e) {
keyList.push(e.key);
// in this example keyList = ['d', 'y', 'i', 'd', 'd']
var result = handleEvent();
}
function handleEvent(keyList) {
// more pseudo code follows
var cmds = commands.keyValue.sortByLengthDescending();
for(var c in cmds) {
// match the keys
var ckey = c.split('');
for(var i = keyList.length; i >= 0; i--) {
if (keyList[i] !== ckey.shift()) {
break;
}
if (ckey.length === 0) {
return commands[c]();
}
}
}
}
이, 간단한 청소 (당신이 그것을 작성하는 방법을 정확하게에 따라 다름) 및 확장 성이 더 많은 명령을 추가하는 것은 매우 간단합니다 당신 변경하여 명령 기능에 매개 변수를 전달할 수 있도록하십시오.
모든 키 누름 이벤트를 모니터링하고 다중 누름 콤보에서 첫 번째 키를 찾았 으면 타이머를 시작해야합니다. 타이머가 활성화되어있는 동안 콤보의 두 번째 키가 눌러 진 경우, 작업을 수행하십시오. //Do the action here
은 g
당신은 할 수 없습니다 100ms의
+1 왜 완전하고 우아한 해결책이 더 많은 표를 얻지 못했는지는 잘 모르겠지만 분명히 시간 초과 된 접근 방식을 선호하지만 이는 매우 훌륭하고 완벽합니다. 기능적인 예. – Basic
글쎄요, "da full codez"는 게시하지 않았습니다. 즉, 1000의 배율로 얻은 득표 수를 즉시 줄입니다.) –