完全にロードせずにツリードキュメント(HTMLなど)を参照できるようにするには、ドキュメントが実際のツリーであるなど、いくつかの仮定を行う必要があります。したがって、クローズタグをわざわざチェックしないでください。クローズタグはとにかく人間が消費するように設計されており、コンピューターも満足するでしょう<>
。
最初のステップは、ドキュメントの最初の部分がドキュメントの最初の部分で表されていると想定することです。それはトートロジーのように聞こえますが、「最新の」HTMLと確かにJSでは、これは技術的にはもはや真実ではありません。それでも、HTMLの行がピクセルに影響を与える可能性がある場合は、ページを部分的にロードすることはできません。
したがって、HTMLファイルと画面上のページの位置の間に単純な関係がある場合、次のステップは、各ページの最後に解析状態を定義することです。これには、おそらく(必ずしもそうとは限りませんが)段落の最後に単一のファイルオフセットが含まれます。また、この状態の一部は、開いているタグのスタックです。
ページングを簡単にするために、これまでに遭遇した各ページのこの「ページ境界」状態を維持するのが賢明です。これにより、ページングを簡単に戻すことができます。
これで、新しいページをレンダリングするときに、前のページ境界状態が初期レンダリング状態になります。HTMLを読み取り、単一のページがオーバーフローするまで要素ごとにレンダリングするだけです。次に、少しバックトラックして、新しいページ境界の状態を判別します。
スムーズなスクロールは、基本的に2つの隣接するページをレンダリングし、最初のページのx%と2番目のページの100-x%を表示することです。このビットを実装すると、各ページをレンダリングするときに段落を終了するのが賢明になる場合があります。これにより、ページの長さがわずかに異なりますが、壊れた段落を処理する必要がないため、ページの境界状態が少し小さくなります。