Javascript を使用して、Chrome で任意に選択された TEXTAREA ノードで選択されたテキストを置き換えようとしています (! コンテンツ編集可能な div ではありません!) 選択されたテキストを置き換えるために多くの場所で繰り返されるコード フラグメントは、基本的にこれを行います:
var sel = window.getSelection();
var range = sel.getRangeAt(0);
range.insertNode( document.createTextNode("test "));
ただし、これは TEXTAREA や INPUT TYPE=TEXT などの入力フィールドでは機能しません。テキストは、TEXTAREA の内部ではなく BEFORE に挿入されます。
textarea.selectionStart と textarea.selectionEnd を使用して、テキスト領域内の選択テキストを変更する別の方法があります。ただし、これらには、実際にアクティブ/選択されている textarea 要素を特定する必要があります。Chrome/Webkit の document.activeElement が壊れているようで、ずっと壊れていました。「現在選択されているテキストエリア」を見つけるための回避策がわかりません。ここでバグを参照してください...
http://code.google.com/p/chromium/issues/detail?id=14436
ここで解決しようとしている問題のマイクロデモを見ることができます。
http://dj1.willowmail.com/~jeske/_drop/insertIssue/1.html
http://ajaxandxml.blogspot.com/2007/11/emulating-activeelement-property-with.html
これについて何か考えはありますか?
任意の TEXTAREA ノードで選択された任意のテキストを含む Web ページが与えられた場合、フォーカスがどのテキストエリアにあるかを事前に知らずに、アクティブなテキストエリアを見つけて、選択したテキストを他のテキストに置き換えるにはどうすればよいですか?
((参考: Chrome 拡張機能でこのコードを使用しています。ページ内の JavaScript コンテンツ スクリプトがページの JavaScript を拡張しているため、事前にページ構造がどのようなものかわかりません。どの Web ページでも機能する必要があります。 )))