blog

キーボードのトップアップと入力キーボードがピットソリューションを埋めるために入力ボックスを隠蔽することによって、モバイルページの一番下のボタンを反応させる

要件説明:リアクトテクノロジースタック、H5フォームのWebページのモバイル実装、フレックスフレキシブルレイアウトの使用、上部の領域にフォームを記入し、下部に固定された送信ボタン。 入力ボックスをクリ...

May 8, 2020 · 2 min. read
シェア

要件説明:リアクトテクノロジースタック、フレックスフレキシブルレイアウトを使用したH5フォームウェブページのモバイル実装、上部にフォーム入力エリア、下部に固定された送信ボタン。

このシナリオでは、次の2つの落とし穴に必ずぶつかります:

  • 入力ボックスをクリックしてフォーカスイベントを取得すると、電話入力キーボードがポップアップ表示され、常に一番下のボタンの上に表示されます。
  • 入力ボックスがページの下の位置にある場合、キーボードがポップアップして入力する領域が見えなくなり、入力を始めて初めて入力位置までスクロールされるため、ユーザーエクスペリエンスが非常に悪くなります。
//コンポーネントのライフサイクル関数に componentDidMount() { // コンテンツエリアの高さ const h = document.body.scrollHeight; //ページサイズの変更に耳を傾ける window.addEventListener("resize", function () { // キーボードがポップアップした後、入力エリアを覆ってしまう問題を解決する。 if (document.activeElement.tagName == "INPUT" || document.activeElement.tagName == "TEXTAREA") { window.setTimeout(function () { document.activeElement.scrollIntoViewIfNeeded(); }, 0); } //キーボードがポップアップし、下に固定されたボタンを上に置く問題を解決する。 //btnSubmitはボタンエリアのノードIDである。 const bottomBtn = document.querySelector("#btnSubmit"); if (document.body.scrollHeight < h) { bottomBtn.style.display = "none"; } else { bottomBtn.style.display = "block"; } }

上記のコードは比較的シンプルですが、基本的にはこの2つの落とし穴を簡単に解決することができます。

Read next

ページ置換アルゴリズム

ページが消去のために選択されるたびに、そのページは二度と使われないか、あるいは最も長い期間アクセスされないページになります。 最初の訪問では、3つのメモリブロックはすべて占有されていないので、最初はページがアクセスされた順番に従って、7、0、1が順番にメモリブロック1、2、3に入れられます。4回目のページ2への訪問では、アルゴリズムの考えに従って、アクセスされたページの優先的な消去が行われます。

May 7, 2020 · 11 min read