3

特定のケースでデフォルトの戻る動作をオーバーライドし、履歴 popstate イベントを発生させるのではなく、アプリケーションの状態を更新しようとしています。

デフォルトの動作を防ぐためにフックする必要がある他のイベントはありますか? リモートの戻るボタンが e.keyCode === 27 で keydown イベントを発生させることがわかりました

const FIRE_REMOTE_BACK = 27;
handleBackButton = (e) => {
  e.stopImmediatePropagation();
  e.stopPropagation();
  e.preventDefault();
  // update app state
}
handleKeyDown = (e) => {
  const {keyCode} = e;
  
  if (keyCode === FIRE_REMOTE_BACK) {
    return handleBackButton(e);
  }
}

アプリケーションの状態が短時間更新されたのを確認しましたが、その後イベントが完了しました。

4

2 に答える 2

3

私自身の質問に答えました。「keyup」(keydown ではない) イベントをリッスンし、 preventDefault()

于 2016-10-06T00:43:37.243 に答える
1

私の場合 (FireOS 7 WebView Chrome 88) では、以下も追加する必要がありました。

document.addEventListener('keypress', function (event) {
  event.stopPropagation();
  event.preventDefault();
});

そうしないと、リモートキーの相互作用が二重に発生します。

于 2021-05-28T13:41:59.260 に答える