私はforeignObjectを作成したSVG要素を持っています。ForeignObjectには、textareaとdivの2つのオブジェクトが含まれています。textareaはdivの上にあり、透明です。ユーザーがテキストエリアに入力すると、テキストがdiv(WYSIWYGの一種のエディター)にコピーされます。これはすべて正常に機能します。ただし、問題は次のとおりです。textarea(100%透明)でテキストを選択すると、選択したテキストが表示されないため、選択内容をdivのテキストにコピーするコードを作成します。
私は次のビットを持っています、このビットはテキストエリアで何が選択されているかを教えてくれます:
var start = e.target.selectionStart;
var end = e.target.selectionEnd;
(eは選択されたイベントリスナーのイベントです)
そして、以下はdiv内のテキストを選択します。
div = $(e.target).next('div');
div = div[0];
selection = window.getSelection();
range = document.createRange();
range.selectNodeContents(div);
selection.addRange(range);
これは機能しますが、div内のすべてのテキストを選択します。テキストエリアで選択された部分のみに選択を制限するにはどうすればよいですか?
(ちなみに、このコードはデモアプリケーション用であり、Firefoxでのみ機能する必要があります)