エンドユーザーがHTMLドキュメントからテキストのセクションを選択して注釈を付けることができるWebベースの注釈ツールを構築しています。プログラム的に言えば、「window.getSelection」と「getRangeAt」を使用すると、選択したテキストと対応する範囲にアクセスして操作するのは簡単です。
しかし、クロスブラウザアプリケーションでこれらすべてをまとめようとすると、問題が発生します。Firefoxではすべてが機能しますが、Safariでは、HTMLボタン(つまり「注釈」ボタン)をクリックすると、ボタンをクリックするとテキストケアレットの位置が変更されたかのように、現在のユーザーテキストの選択が消えることにすぐに気付きました。window.getSelectionにアクセスしようとする私のコードは、このボタンのスクリプトから実行され、選択が存在しないことを報告します。
基本的に、テキストを選択して[太字]または[フォントの変更]をクリックする動作とメカニズムは注釈機能に対応しているため、Googleドキュメント、特にワープロアプリケーションがこれをどのように処理するかを掘り下げて調べました。Googleドキュメントでは、編集するドキュメントのテキストをiframeに読み込みます。これをいじってみると、Firefoxは、複数のフレームまたはiframeを含むWebページで複数の選択範囲をサポートしていることがわかりました。つまり、ベースページでテキストのセクションを選択し、最初の選択が消えることなくiframeでテキストの別のセクションを選択できます。このGoogleDocsソリューションは、FirefoxとSafari(私が興味を持っている2つのブラウザー)の両方で機能します。しかし、このソリューションをテストするための簡単なサンプルページを作成した場合、Safariでは機能しませんでした。
これを機能させるために私がここで欠けているものを誰かが知っていますか?または、これを機能させるための別の方法についての提案がありますか?