2017-12-13 16 views
0

デスクトップブラウザで簡単です。私はちょうどdocumentまたはwindowの​​のために耳を傾け、答えherehereと同様に、preventDefaultを呼び出します。Android用Chromeですべてのキーボードイベントを無視するにはどうすればよいですか?

私は通常、このようなものを使用するので、すべてのキーボード入力を無視するようなものだ:

window.addEventListener('keydown', function(e){ 
    e.preventDefault(); 
    e.stopPropagation(); 
    e.stopImmediatePropagation(); 
}, true); 

しかし、彼らは私のAndroidタブレットでは動作しません。 (Androidのためクロム63.0.3239.83とFirefox 57.0.1でテスト)


ことはここでは一般的なシナリオです:私は、現在の能動素子として注目<input>を持っている、そして私は凍結するために実行するためにいくつかのJavaScriptを必要としますすべてのユーザー入力は無視されます。


私はこの問題で多くの時間を浪費していましたが、まだAndroidタブレットの回避策を見つけることができません。

他の要素にフォーカスを変更する、または要素のreadOnlytrueに設定するなど、いくつかの方法が考えられました。しかし、警告があります。 focus()を呼び出すと、以前にフォーカスされた要素のonblurがトリガーされます。 readOnlyを設定すると、(その<input>ため、例えば任意の​​やkeyupハンドラを)発射からフォーカスのある要素のイベントリスナーを防ぎ、そして時にはインクルードキーは、ユーザーがページ上の次の入力フィールドにジャンプすることを可能にするキーになり入りません。

望ましくない副作用なしにChrome for Androidの上のすべてのキーボード入力を無視する方法はありますか?最後に

答えて

0

私だけではなく​​のために同じハンドラ(質問で使用される機能)を添付するwindow.addEventListenerと呼ばれるだけでなく、blurfocus、その後、document.documentElement.focus()と呼ばれます。 (tabindex="0"<html>に追加する必要があります)

これは、質問に記載されている、以前にフォーカスを絞った要素のonblurをトリガーするという問題を回避します。

(ハンドラはここでしか伝播を止めるためのものであるので、blurfocusが解約のイベントではないことに注意してください。)

関連する問題