※ 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に挿入する方法がうまく機能していません。具体的なコード例を教えてください。
別ウインドウから、textarea内のカーソル位置に文字を挿入。
別ウインドウから、textarea内のカーソル位置に文字を挿入。
お世話になっております。
やりたいことは、以下のような感じです。
2つのウインドウ(ページA、ページB)があります。
ページAには、textareaがあります。
textareaにデータを入力後、
マウスでtextarea内のデータの特定の位置をクリックし、
カーソルを置いておきます。
この状態で、ページAにあるコマンドボタンをクリックすると、
ページBが開きます。
ページBには、いくつかコマンドボタンが表示されていて、
このうち、どれか1つをクリックすると、
ページBが閉じられ、かつ、
ページBで選択したコマンドボタンに設定されている値が、
ページAのtextarea内のカーソル位置に挿入される。
・・・以上のような感じのことをやりたのです。
ページA内のコマンドボタンからページBを開くのは、
windows.open(URL)
で開くことができました。
ページBでコマンドボタンを選択した際、
window.close()
でページBを閉じるところまではできたのですが、
値をページAのtextareaに挿入するところが、うまくいきません。
(↓こんな感じなのかと思うのですが・・・)
window.close();
var str1 = document.getElementById(textareaのid).value;
var str2 = "aaa"; // 挿入したい値
var p = document.getElementById('textareaのid').selectionStart;
document.getElementById(textareaのid).value = str1.substr(0, p) + str2 + str1.substr(p, str1.length);
どなたかご教授願います。
よろしくお願いします。
お礼
ご回答ありがとうございます。 ご助言のとおり、 window.opener.document.getElementById("sample"); を使えば、別ウインドウに値を渡せることは、わかりました。 ただ、実行した結果は、 挿入したい値が、そのtextareaの最後尾に挿入され、 かつ、 さらに、その後ろに、もう一度、 textarea内のデータが挿入されてしまいました。 現在、対応を検討中です。 まずは、御礼まで。
補足
あと、textareaで挿入場所を指定する際、 クリックでの位置指定だけでなく、 範囲指定(ドラッグ)して、その範囲に、挿入する値を入れ替えたいのですが。 ↓こんな感じでやるのかと思うのですが、うまくいきません。 document.getElementById("osi1_f").focus(); var text=getSelectText(); document.selection.createRange().text = ""; 併せてご教授いただければ、大変ありがたいのですが。 よろしくお願いします。