• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:別ウインドウから、textarea内のカーソル位置に文字を挿入。)

別ウインドウから、textarea内のカーソル位置に文字を挿入する方法について

このQ&Aのポイント
  • 2つのウインドウ(ページA、ページB)があります。ページAには、textareaがあります。マウスでtextarea内のデータの特定の位置をクリックし、カーソルを置いておきます。この状態で、ページAにあるコマンドボタンをクリックすると、ページBが開きます。ページBには、いくつかコマンドボタンが表示されていて、このうち、どれか1つをクリックすると、ページBが閉じられ、かつ、ページBで選択したコマンドボタンに設定されている値が、ページAのtextarea内のカーソル位置に挿入されます。
  • ページBを閉じるときに、ページBで選択したコマンドボタンに設定されている値をページAのtextareaに挿入する方法について教えてください。
  • 現在、ウェブページのコードでwindow.close()を使用してページBを閉じることができますが、値をページAのtextareaに挿入する方法がうまく機能していません。具体的なコード例を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • zeff
  • ベストアンサー率69% (137/198)
回答No.1

ページAはwindow.openerで参照できますので、 こういう具合でやってみたらいいんじゃないでしょうか。 <script type="text/javascript"> <!-- function hoge(o){ //ページAのtextareaのidを"sample"とする var sample = window.opener.document.getElementById("sample"); var str1 = sample.value; var str2 = o.value; //たとえば押されたbuttonのvalue var p = sample.selectionStart; sample.value = str1.substr(0, p) + str2 + str1.substr(p, str1.length); window.close(); } //--> </script> </head> <body> <button type="button" value="aaa" onclick="hoge(this);">aaa</button> <button type="button" value="bbb" onclick="hoge(this);">bbb</button> </body> </html>

asakichi00
質問者

お礼

ご回答ありがとうございます。 ご助言のとおり、 window.opener.document.getElementById("sample"); を使えば、別ウインドウに値を渡せることは、わかりました。 ただ、実行した結果は、 挿入したい値が、そのtextareaの最後尾に挿入され、 かつ、 さらに、その後ろに、もう一度、 textarea内のデータが挿入されてしまいました。 現在、対応を検討中です。 まずは、御礼まで。

asakichi00
質問者

補足

あと、textareaで挿入場所を指定する際、 クリックでの位置指定だけでなく、 範囲指定(ドラッグ)して、その範囲に、挿入する値を入れ替えたいのですが。 ↓こんな感じでやるのかと思うのですが、うまくいきません。 document.getElementById("osi1_f").focus(); var text=getSelectText(); document.selection.createRange().text = ""; 併せてご教授いただければ、大変ありがたいのですが。 よろしくお願いします。

すると、全ての回答が全文表示されます。

関連するQ&A