На клавиатуре warnDefault событие клавиатуры сбрасывает позицию курсора при непрерывной печати - PullRequest
0 голосов
/ 07 февраля 2019

Событие нажатия клавиши Tab с помощью protectDefault сбрасывает позицию курсора для запуска, когда вкладка является последней в серии непрерывных нажатий клавиш

У меня есть расширение Chrome Gmail, написанное в реагировать, где я переопределяю поведение вкладки.В свойствах listenDefault и stopImmediatePropagation в прослушивателе событий работают, только когда вкладка - единственное событие клавиатуры, нажатие которого происходит в пределах моргания курсора.Если табуляция является последним символом, нажатым в непрерывной последовательности нажатий клавиш, курсор сбрасывается в начало составленного сообщения, хотя событие по-прежнему имеет его значение по умолчанию заблокировано.Это поведение только для клавиши табуляции - например, тот же прослушиватель событий работает правильно, когда предотвращается "q".Предотвращение вкладок, кажется, работает, только если я сосредотачиваюсь на contentEditable после warnDefault

  public componentDidMount () {
    const { el } = this.props.editable;
    el.addEventListener("keydown", this.testKeys.bind(this), true);
  };

  private testKeys (e:KeyboardEvent) {
    if (e.key === "Tab") {
      console.log("tab");
      e.preventDefault();
      e.stopImmediatePropagation();
      this.props.editable.el.focus();
    } 
  }

Как сохранить правильную позицию курсора, даже если вкладка является последней из серии нажатий клавиш?

1 Ответ

0 голосов
/ 08 февраля 2019

Разобрался:

Gmail присоединяет свой собственный прослушиватель к событию keydown для tab, чтобы предотвратитьDefault () и переключить фокус на следующий элемент на уровне окна.Чтобы сначала перехватить событие, вам нужно установить прослушиватель событий в окне с capture: true.

...