Google ドキュメントに似たワープロ Web アプリを構築しようとしています。Mercury Editor (contentEditable 属性に依存) の使用を開始し、(Google Docs のように) 紙のページのように見える編集可能な div 要素を作成しました。
ここで大きな問題は、複数のページを処理する方法です。つまり、テキスト (または他のコンテンツ) がページの高さからはみ出すことを検出し、コンテンツを分割して新しいページを作成する方法です。これが発生するシナリオがいくつかあります。
- ユーザーがページの最後に改行を入力します。新しいページを作成する必要があります。
- ユーザーが単語を入力していて、ページの最後に到達しました。新しいページを作成し、その単語を新しいページに移動する必要があります。
- ユーザーが大きなテキストを貼り付けましたが、現在のページに完全には収まりません。新しいページを作成し、収まらないテキストのみを新しいページに移動する必要があります。
- ユーザーが、現在のページに収まらない他の要素 (画像など) を挿入します。その要素で新しいページを作成する必要があります。
Google ドキュメントの JS コードに飛び込もうとしましたが、圧縮されているため、理解することはほとんど不可能です。コードが美化されたスタンドアロン バージョンの Google Docsがありますが、古くて複数のページを処理できません。
これを達成する方法についてのヒントをいただければ幸いです。