Discourseは仮想キーボードをどのように検出/推測しますか?

Discourseとは関係のないプロジェクトで、モバイルブラウザの仮想キーボードがアクティブかどうかを検出できるようにしたいと考えています。数日間考えたり解決策を探したりした後、毎日訪れているDiscourseフォーラムのモバイル仮想キーボード用の非常にスムーズなインターフェースに気づきました。キーボードを確実に検出し、返信ボックスが残りのスペースを埋めるように変更し、キーボードを閉じると通常のモードに戻るのが素晴らしいです。

仮想キーボードを検出するための他の簡単な解決策は見つかりませんでした(Stack Overflowのほとんどは試さないように言っています)が、Discourseが行っていることはうまくいっているようです。しかし、コードベースは大きく複雑で、関連コードのどこを見ればよいかわかりません。そのため、Discourseのモバイルインターフェースに詳しい人がコードを教えてくれるか、Discourseが使用しているヒューリスティックについて説明してくれることを願っています。

「いいね!」 2

Visual Viewport API を使用しています: Visual Viewport API - Web APIs | MDN.

リポジトリの JS ファイルで visualViewport を検索できます。iOS ではコンポーザーの配置によりいくつかの癖があるため、そこではより複雑なオーバーライドを使用しています。関連ファイルは app/assets/javascripts/discourse/app/lib/safari-hacks.js です。

「いいね!」 5

そのヒントをありがとうございます!

「いいね!」 2