Обсидианский плагин: как подавить действия редактора (например, ввести вставку Newline) в пользовательский режим ввода?Javascript

Форум по Javascript
Anonymous
Обсидианский плагин: как подавить действия редактора (например, ввести вставку Newline) в пользовательский режим ввода?

Сообщение Anonymous »

Я пишу плагин обсидиана, который активирует пользовательский «режим поиска». Находясь в этом режиме, я прислушиваюсь к событиям Keydown на уровне документа, и я хочу захватить клавиши, такие как Enter, Escape, Backspace и все ввод символов без этих ключей, запускающих поведение по умолчанию в редакторе. Я называю evt.preventdefault () и evt.stoppropagation () внутри моего обработчика. Однако, когда я нажимаю Ente In Ente в режиме поиска, редактор все еще вставляет Newline, хотя я называю evt.preventdefault () .
this.registerDomEvent(document, "keydown", (evt: KeyboardEvent) => {
if (this.findMode) {
if (evt.key === "Escape") {
this.exitFindMode();
evt.preventDefault();
} else if (evt.key === "Enter") {
this.findAndHighlightInCurrentLine();
evt.preventDefault();
evt.stopPropagation();
evt.stopImmediatePropagation();
} else if (evt.key === "Backspace") {
if (this.searchBuffer.length > 0) {
this.searchBuffer = this.searchBuffer.substring(
0,
this.searchBuffer.length - 1
);
this.updateStatusBar();
}
evt.preventDefault();
} else if (
!evt.ctrlKey &&
!evt.altKey &&
!evt.metaKey &&
evt.key.length === 1
) {
this.searchBuffer += evt.key;
this.updateStatusBar();
evt.preventDefault();
}
}
});


Подробнее здесь: https://stackoverflow.com/questions/796 ... -newline-i

Вернуться в «Javascript»